結果

問題 No.648  お や す み 
ユーザー rgGwRQrgGwRQ
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#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");
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0