結果
問題 | No.648 お や す み |
ユーザー |
![]() |
提出日時 | 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 1000000000void 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;elsereturn 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;elselow = 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);elseprintf("NO");}