1. 程式人生 > >1087 1 10 100 1000

1087 1 10 100 1000

efi %d pri bits ural 我只 fin printf .aspx

1087 1 10 100 1000技術分享

題目來源: Ural 1209 基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級算法題 技術分享 收藏 技術分享 關註 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

我只是將其存到了一個set裏面,看到其他有更快的做法,但我只想用自己的方法.
 1 #include <bits/stdc++.h>
 2 #define N 1000000000
 3 using namespace std;
 4 set<int> s;
 5 int init(){
 6   s.insert(1);
 7   int ans=1;
 8   for(int i=1;ans+i<=1000000000;i++){
 9     s.insert(ans+i);
10     ans+=i;
11   }
12 }
13 int main(){
14   int n;
15   scanf("%d",&n);
16   init();
17   while
(n--){ 18 int m; 19 scanf("%d",&m); 20 if(s.count(m)) 21 printf("1\n"); 22 else 23 printf("0\n"); 24 } 25 return 0; 26 }

1087 1 10 100 1000