51NOD 1087 1 10 100 1000
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
题解:用map按规律存起来直接查找即可。
AC代码:
1 #include <iostream> 2 #include <map> 3 using namespace std; 4 map <int,int> Q; 5 int t; 6 void intc() 7 { 8 int k = 1; 9 Q[k]=1; 10 for(int i=2;i<=100000000;i+=k) 11 { 12 Q[i]=1; 13 k++; 14 } 15 } 16 int main() 17 { 18 cin>>t; 19 intc(); 20 while(t--) 21 { 22 int n; 23 cin>>n; 24 if(Q.count(n))cout<<1<<endl; 25 else cout<<0<<endl; 26 } 27 return 0; 28 }