13 条题解

  • 1
    @ 2025-2-24 19:21:50

    Code

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int a;
    	cin>>a;
    	if(a<=27 && a%3==0 || a==3003)
    		cout<<"Yes";
    	else
    		cout<<"No";
    	return 0;
    }
    

    求点赞

    • 1
      @ 2025-1-12 10:19:28

      求求各位大佬点个赞吧!这是本蒟蒻的第一篇题解!

      解题方法

      已知3x37=111 33*37=1221 3003x37=111111(特判)

      可得当n/3<10 且n%30 或 n3003 成立

      复杂度

      时间复杂度:

      添加时间复杂度, 示例: O(1)O(1)

      空间复杂度:

      添加空间复杂度, 示例: O(1)O(1)

      Code

      #include<bits/stdc++.h>
      using namespace std;
      int main(){
          int a;
          cin>>a;
          if(a%3==0 && a/3<10 || a==3003)cout<<"Yes";
          else cout<<"No";
          return 0;
      }
      
      • 1
        @ 2024-8-25 18:33:49

        问题简述

        输入自然数 aa,判断 37×a37\times a 是否各个数位都相等。

        思路

        • 先取 37a37a 的个位数(即 37amod1037a\bmod 10),作为基准值 cc
        • 然后,通过循环不断去除 37a37a 的个位数(即 37a37a 除以 1010 的整数部分),并检查每次剩余的数的个位数是否与基准值 cc 相等。
        • 如果在任何一个时刻发现不相等,即可判断 37a37a 的所有数位上的数字不相等,输出 No 并结束程序。
        • 如果循环结束(即 37a37a 被除尽)且所有数位上的数字都与基准值 cc 相等,则输出 Yes

        代码

        #include <iostream>
        using namespace std;
        int n;
        int main() {
        	cin >> n; 
        	n *= 37;
        	int c = n % 10;
        	while(n){
        		if(n % 10 != c){
        			cout << "No";
        			return 0;
        		}
        		n /= 10;
        	}
        	cout << "Yes";
        }
        
        • -1
          @ 2024-12-26 21:00:49

          标题

          37的题解

          思路

          一种很简单的方法,把 a37a*37 后得到的数记为 aa',令 ppa mod 10a'\ mod\ 10 (其中mod表示对取模数) 只要把aa'不断地除以 1010,判断新的数 mod 10mod\ 10pp 是否相等即可

          复杂度

          时间复杂度:

          O(log10n)O(log_{10}n) 我们期间不断对 aa'/10/10 操作很好理解

          Code

          #include<bits/stdc++.h>
          using namespace std;
          int main()
          {
              int a;
              cin>>a;
              a*=37;
              int p=a%10;
              while(a)
              {
                  if(a%10 != p)
                  {
                      cout<<"No";
                      return 0;
                  }
                  a/=10;
              }
              cout<<"Yes";
              return 0;
          }
          
          • -1
            @ 2024-10-7 14:52:15

            37的题解

            思路

            把该数乘于37,求余求出第一位;

            把每一位都遍历过去,不一样的话就直接输出“No”再直接结束循环,

            这样循环结束并且没输出就说明是OK的,则直接输出“Yes”即可!

            解题方法

            如思路

            复杂度

            时间复杂度:

            空间复杂度:

            Code

            #include<bits/stdc++.h>
            using namespace std;
            int n;
            int main(){
            	ios::sync_with_stdio(0);//加速,可加可不加
            	cin.tie(0),cout.tie(0);
            	cin>>n;
            	int s=n*37%10;//求出第一位
            	n*=37;
            	while(n!=0){
            		if(n%10!=s){//如果不符,直接输出
            			cout<<"No";
            			return 0;//结束程序
            		}
            		n/=10;
            	}
            	cout<<"Yes";//到这,如果程序还没结束就说明可以,则输出
            	return 0;
            }
            • -1
              @ 2024-10-3 18:19:45

              MX-J3-A 题解

              思路

              不太懂数学的来

              37a37a 转换为字符串,再去判断

              Code

              #include<bits/stdc++.h>
              #define Yes cout<<"Yes\n"
              #define No cout<<"No\n"
              using namespace std;
              bool check(int x){
              	stringstream ss;
              	ss<<x;
              	string s;
              	ss>>s;
              	char c=s[0];
              	for(int i=1;i<sz(s);i++){
              		if(s[i]!=c){
              			return false;
              		}
              	}
              	return true;
              }
              int main(){
              	int a;
              	cin>>a;
              	if(check(37*a)){
              		Yes;
              	}else{
              		No;
              	}
              	return 0;
              }
              
              • -1
                @ 2024-8-26 10:57:07

                题目 37 的题解

                思路

                声明X=37a,用数组b[]将X的每一位保存起来,再逐一比较就OK了。

                如何获取X的每一位

                由于不知道X的位数,所以用while循环。

                CODE:

                #include<bits/stdc++.h> using namespace std; int a; int b[1010]; bool s=false; int main(){ cin>>a; int c=37*a; int i=0; while(c!=0){ b[i++]=c%10; c/=10; } for(int j=1;j<i;j++){ if(b[j]!=b[j-1]){ s=true; break; } } if(s==true){ cout<<"No"<<endl; }else{ cout<<"Yes"<<endl; } return 0; }

                • -3
                  @ 2024-9-7 14:12:40

                  37 的题解

                  思路

                  a×37后判断每位是否与各位相等

                  时间复杂度:O(n)O(n)

                  Code

                  #include<bits/stdc++.h> using namespace std; int main() { int a,n,p=0; cin>>a; a*=37; n=a%10; while(a) { if(n!=a%10) { cout<<"No"; return 0; } a/=10; } cout<<"Yes"; return 0; }

                  • -5
                    @ 2024-9-18 22:26:03

                    懂点数学的都看得出来

                    思路

                    从1至37 * 3737只有以下10个数是37的倍数,每一位都相同:

                    111 * 1至111 * 9=3 * 1至3 * 9

                    111111=3003 * 37

                    解题方法

                    打表

                    复杂度

                    时间复杂度:

                    O(1)O(1)

                    空间复杂度:

                    O(1)O(1)

                    Code

                    #include<bits/stdc++.h>
                    using namespace std;
                    int main()
                    {
                    	int n;
                    	string s="No";
                    	cin>>n;
                    	if(n<30&&n%3==0)s="Yes";
                    	if(n==3003)s="Yes";
                    	cout<<s<<endl;
                    	return 0.;
                    }
                    
                    • -5
                      @ 2024-8-26 20:12:45

                      思路

                      很简单,只需要将输入的数字乘上37,再一位一位的判断是不是都是一样的就可以了。

                      Code

                      #include<bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); n*=37; int flag=0; int ret=n%10; while(n>0) { if(n%10!=ret) { flag=1; break; } n/=10; } if(flag==0) { printf("Yes"); } else { printf("No"); } return 0; }

                      • -6
                        @ 2024-8-26 8:07:03

                        #include<bits/stdc++.h> using namespace std; int main() { int a; cin>>a; a*=37; bool flag=false; int q=a%10; a/=10; while(a!=0) { if(a%10!=q) flag=true; q=a%10; a/=10; } if(flag==true) cout<<"No"; else cout<<"Yes"; return 0; }

                        • -6
                          @ 2024-8-25 21:55:43

                          标题

                          思路

                          各个数位都相等时必能被与其相同数位的‘1’整除(如位数==3,111;位数=2;11 因此生成这样与其同数位的数在做除法即可

                          解题方法

                          1.计算a*37的位数 2.生成 3.取余判断

                          复杂度

                          dddd

                          时间复杂度:

                          O(n) 添加时间复杂度, 示例: O(n)O(n)

                          空间复杂度:

                          ??? 添加空间复杂度, 示例: O(n)O(n)

                          Code

                          #include<bits/stdc++.h> using namespace std; long n,ans,i,s; int main() {cin.tie(0); cin>>n; ans=n37; i=1; s=ans; while(s/10){ s/=10; i++; }s=1; for(long long j=2;j<=i;j++){ s=10; s++; }if(ans%s==0){ cout<<"Yes"; }else{ cout<<"No"; } return 0; }

                          • -7
                            @ 2024-9-20 20:35:08

                            标题

                            思路

                            解题方法

                            复杂度

                            时间复杂度:

                            添加时间复杂度, 示例: O(n)O(n)

                            空间复杂度:

                            添加空间复杂度, 示例: O(n)O(n)

                            Code

                            • 1

                            信息

                            ID
                            40
                            时间
                            1000ms
                            内存
                            512MiB
                            难度
                            1
                            标签
                            递交数
                            1010
                            已通过
                            477
                            上传者