fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. bool checker(int x){
  4. while(x!=1){
  5. if(x%10!=1 || x%10!=0){
  6. return false;
  7. }
  8. x/=10;
  9. }
  10. return true;
  11. }
  12. void recur(string& g,vector<char>& arr,unordered_map<int,bool>& ok){
  13. if(g[0]=='0'){
  14. return;
  15. }
  16.  
  17. if(g.length()==6){
  18. return;
  19. }
  20. if(g.length()!=0){
  21. int sp=stoi(g);
  22. ok[sp]=1;
  23. }
  24. for(int i=0;i<2;i++){
  25. g.push_back(arr[i]);
  26. recur(g,arr,ok);
  27. g.pop_back();
  28. }
  29. return;
  30.  
  31. }
  32. int main()
  33. {
  34. string g="";
  35. vector<char>arr{'1','0'};
  36. unordered_map<int,bool>ok;
  37. recur(g,arr,ok);
  38. int t;
  39. cin>>t;
  40. while(t--){
  41. int x;
  42. cin>>x;
  43. if(checker(x)){
  44. cout<<"YES"<<endl;
  45. continue;
  46. }
  47. bool kk=0;
  48. while(x!=1){
  49. bool flag=0;
  50. if(x==1){
  51. kk=1;
  52. break;
  53. }
  54. for(auto n:ok){
  55. if(n.first!=1 && x%n.first==0){
  56. x/=n.first;
  57. flag=1;
  58. break;
  59. }
  60. }
  61. if(x==1){
  62. kk=1;
  63. break;
  64. }
  65. if(!flag){
  66. break;
  67. }
  68. }
  69. if(kk){
  70. cout<<"YES"<<endl;
  71. }else
  72. cout<<"NO"<<endl;
  73. }
  74.  
  75. return 0;
  76. }
Success #stdin #stdout 0.01s 5292KB
stdin
11
121
1
14641
12221
10110
100000
99
112
2024
12421
1001
stdout
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
YES