結果
| 問題 |
No.648 お や す み
|
| コンテスト | |
| ユーザー |
rgGwRQ
|
| 提出日時 | 2020-02-23 22:39:30 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,884 bytes |
| コンパイル時間 | 725 ms |
| コンパイル使用メモリ | 74,456 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-10 22:21:11 |
| 合計ジャッジ時間 | 2,502 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 84 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <algorithm>
//#include <vector>
using namespace std;
#define MAX(x,y) (x>y?x:y)
#define MIN(x,y) (x<y?x:y)
#define ABS(x) (x>0?x:-(x))
#define INF 1000000000
void swap(int* a, int* b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void swap2(double* a, double* b)
{
double tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
int gcd(int a, int b)
{
if (a < b)
swap(&a, &b);
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
int factorial(int n)
{
int a=1;
if (n == 0)
return 1;
for (int i = 1; i <= n; i++)
a *= i;
return a;
}
int Con(int a, int b)
{
return factorial(a) / (factorial(b) * factorial(a - b));
}
int a[20] = { 0 };
//int binary_search(int key)
//{
// int low, high, middle;
//
// low = 0;
// high = 20 - 1;
//
//
//
// while (low <= high)
// {
// middle = (low + high) / 2;
// if (key == a[middle])
// return middle;
// else if (key < a[middle])
// high = middle - 1;
// else if (key > a[middle])
// low = middle + 1;
// }
// return INF;
//}
int binary_search(long long int key)
{
long long int low = 0, high = 2000000000, middle;
long long int p;
while (low <= high)
{
middle = (low + high) / 2;
//printf("%d \n", middle);
p = (middle * (middle + 1));
if (p == key*2)
return middle;
else if (p >key*2)
high = middle - 1;
else
low = middle + 1;
}
return 0;
}
int main()
{
//for (int i = 0; i < 20; i++)
// a[i] = rand() % 50;
//
//sort(a, a + 20);
//for (int i = 0; i < 20; i++)
// printf("%d\n", a[i]);
//for (int i = 0; i < 20; i++)
//{
// printf(" %d\n",binary_search(i));
//}
long long int n;
scanf("%lld", &n);
long long int t = binary_search(n);
if (t >0)
printf("YES\n%lld",t);
else
printf("NO");
}
rgGwRQ