cf#ecr7-A. Infinite Sequence-暴力/二分-数学

来源:互联网 发布:网页美工视频教程 编辑:程序博客网 时间:2024/06/05 19:50

http://codeforces.com/contest/622/problem/A


给无限序列 1 12 123 1 2 3 4  1 2 3 4 5 。。。


找出第n个数是什么。。。

poj有道加强版的。。这个直接就是找到最接近n的那个 k*(k+1)/2即可。。

n=1e14. cf服务器比较6直接暴力就可以了。。

int main(){ __int64 n;scanf("%I64d",&n);__int64 i=1;while(n>i){n-=i;i++;}printf("%I64d\n",n);return 0;}


二分找找答案也是可以的

#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <map>#include <set>#include <vector>#include <iostream>using namespace std;const int inf=2147483647;const double pi=acos(-1.0);double eps=0.000001; __int64 get(__int64 x){return x*(x+1)/2;}int bin(__int64 n){__int64 l=1;__int64 r=1e8;while(l<=r){if (r-l<=1){if (get(r)<=n)return r;elsereturn l;}__int64 mid=(l+r)>>1;if (get(mid)>n)r=mid-1;elsel=mid;}}int main(){ __int64 n;scanf("%I64d",&n); int ret=bin(n);if (n-get(ret)==0)printf("%I64d\n",ret);elseprintf("%I64d\n",n-get(ret));return 0;}



0 0
原创粉丝点击