您的位置:首页 > 其它

51Nod 1087 1 10 100 1000

2016-11-21 20:24 246 查看
1,10,100,1000...组成序列1101001000...,求这个序列的第N位是0还是1。

Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行1个数N。(1 <= N <= 10^9)

Output
共T行,如果该位是0,输出0,如果该位是1,输出1。

Input示例
3
1
2
3

Output示例
1
1
0

分析:为“1”的位依次为1,2,4,7,11,16……,记为m

m = 1+(n*(n-1))/2  (n=1,2,3,4……)

#include <stdio.h>
#include <math.h>
int main()
{
int t;
scanf("%d",&t);
int n;
for (int i = 0; i < t; i++)
{
scanf("%d",&n);
if (n == 1)
printf("1\n");
else
{
int k = 2*(n-1);
for (int j = sqrt(2*n); j < 100000; j++)
{
if(j*(j-1) == k)
{
printf("1\n");
break;
}
else if(j*(j-1) > k)
{
printf("0\n");
break;
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: