19 条题解

  • 17
    @ 2022-8-19 19:00:47

    这一道题同样,是函数问题,那么先把判断回文的代码抬过来!

    bool huiwen(int n1)
    {
        int n2 = n1, sum = 0;
        while (n1 > 0)
        {
            sum = sum * 10 + n1 % 10;
            n1 /= 10;
        }
        if (sum == n2) return true;
        else return false;
    }
    

    然后只需要输入变量 n,并且便利从 1 ~ n,如果是回文数字就将总数 sum 加上一,就是AC代码啦!

    #include <bits/stdc++.h>
    using namespace std;
    bool huiwen(int n1)
    {
        int n2 = n1, sum = 0;
        while (n1 > 0)
        {
            sum = sum * 10 + n1 % 10;
            n1 /= 10;
        }
        if (sum == n2) return true;
        else return false;
    }
    int main()
    {
        int n, sum = 0;
        cin >> n; 
        for (int i = 1; i <= n; i++)
            if (huiwen(i)) sum += 1;
        cout << sum << endl;
        return 0;
    }
    
    • @ 2024-1-18 19:11:38

      裴多了image

    • @ 2024-1-18 19:12:28

      这个image

    • @ 2024-1-18 19:13:48

      建议up可以写的简略些

    • @ 2024-2-28 17:35:27

      @

      #include <cstdio>
      using namespace std;bool pnum(int x){int y=x,z=0;while(x>0)z=z*10+x%10,x/=10;return y==z;}int main(){int n,cnt=0;scanf("%d",&n);for(int i=1;i<=n;i++)if(pnum(i))cnt++;printf("%d\n",cnt);}
      
    • @ 2024-2-28 17:36:26

      @ 我的代码是不是更短?

  • 3
    @ 2023-8-28 16:45:43

    #include<bits/stdc++.h> using namespace std; int n,ans; int hw(int h){ int sum=0; while(h>0){ sum=sum*10+h%10; h/=10; } return sum; } int main(){ cin>>n; for(int i=1;i<=n;i++) if(hw(i)==i) ans++; cout<<ans; return 0; } 先点赞再来偷代码!

    • 3
      @ 2023-1-18 10:39:04
      #include <iostream>//hetao3097453
      using namespace std;
      bool huiwen(int x)
      {
          int n = x, sum = 0;
          while (x > 0)
          {
              sum = sum * 10 + x % 10;
              x /= 10;
          }
          if (sum == n) 
          {
              return true;
          }
          else 
          {
              return false;
          }
      }
      int main()
      {
          int n,sum = 0;
          cin >> n;
          for(int i = 1;i <= n;i++)
          {
              if(huiwen(i))
              {
                  sum++;
              }
          }
          cout << sum;
          return 0;
      }
      
      
      • 3
        @ 2022-5-26 13:53:48

        n的范围是1到10000,10000不是回文数,所以用for循环判断从1~n每个数字按一位数、两位数、三位数、四位数即可,首先要计算出该数是几位数,用while循环,只要该数一直大于0,就让该数不断除以10,算出是几位数,其次,判断时分为以下几种情况进行判断:

        1. 一位数,即为回文数
        2. 两位数,判断个位和十位是否相等
        3. 三位数,判断个位和百位是否相等
        4. 四位数,判断个位和千位、十位和百位是否相等

        条件成立,则总和累加,for循环结束之后,输出sum。

        for (int i = 1; i <= n; i++)   //从1遍历到n,每个数一次去判断
            {
                int cnt = 0;//计数器,记录该数位数
                int x = i; //未避免i的值发生变化,用一个临时变量存放该数字
                while (x > 0) //计算该数字的位数
                {
                    cnt++;
                    x /= 10;
                }
                if (cnt == 1) //个位数,sum++
                {
                    sum++;
                }
                else if (cnt == 2 && (i % 10 == i / 10))  //十位数,个位和十位相等,sum++
                {
                    sum++;
                }
                else if (cnt == 3 && (i % 10 == i / 100))  //百位数,个位和百位相等,sum++
                {
                    sum++;
                }
                else if (cnt == 4 && (i % 10 == i / 1000) && (i / 10 % 10 == i / 100 % 10))  
                {
                    sum++;    //千位数,个位和千位、十位和百位相等,sum++
                }
            }
        
      • 2
        @ 2023-8-9 20:06:08
        #include <bits/stdc++.h>
        using namespace std;
        bool huiwen(int n1)
        {
            int n2 = n1, sum = 0;
            while (n1 > 0)
            {
                sum = sum * 10 + n1 % 10;
                n1 /= 10;
            }
            if (sum == n2) return true;
            else return false;
        }
        int main()
        {
            int n, sum = 0;
            cin >> n; 
            for (int i = 1; i <= n; i++)
                if (huiwen(i)) sum += 1;
            cout << sum << endl;
            return 0;
        }
        
        • 1
          @ 2024-2-3 12:10:41

          把上一题判断回文数的函数搬下来,修改几句代码就可以了

          #include <iostream>
          using namespace std;
          bool huiwen(int m)
          {
              int m1=m,sum=0;
              while(m>0)
              {
                  sum=sum*10+m%10;
                  m/=10;
              }
              if (sum==m1)
              {
                  return true;
              }
              else
              {
                  return false;
              }
          }
          int main()
          {
              int n,num=0;
              cin >> n;
              for (int i=1;i<=n;i++)
              {
                  if (huiwen(i))
                  {
                      num++;
                  }
              }
          cout << num;
          return 0;
          }
          
          • 1
            @ 2023-7-23 8:20:23
            #include <cstdio>
            using namespace std;
            bool pnum(int x){
                int y=x,z=0;
                while(x>0)z=z*10+x%10,x/=10;
                return y==z;
            }
            int main(){
                int n,cnt=0;
                scanf("%d",&n);
                for(int i=1;i<=n;i++)if(pnum(i))cnt++;
                printf("%d\n",cnt);
                return 0;
            }
            
            • 1
              @ 2023-7-6 20:27:54

              image 最简代码

              • 1
                @ 2023-5-30 13:22:36

                这题应该不用多说吧,直接把上一题函数搬下来就行了。(函数建议保存,以后应该要用)。

                bool huiwen(int x)
                {
                    int x1=x,sum=0;
                    while(x>0)
                    {
                        sum=sum*10+x%10;
                        x/=10;
                    }
                    return sum==x1;//很多人都是判断,其实这样也行。
                }
                

                然后循环判断,如果是回文数就把num增加。

                int main()
                {
                    int n,num=0;cin>>n;
                    for (int i=1;i<=n;i++)if(huiwen(i))num++;
                    cout<<num;
                    return 0;
                }
                

                连起来就是——

                #include <bits/stdc++.h>
                using namespace std;
                bool huiwen(int x)
                {
                    int x1=x,sum=0;
                    while(x>0)
                    {
                        sum=sum*10+x%10;
                        x/=10;
                    }
                    return sum==x1;
                }
                int main()
                {
                    int n,num=0;cin>>n;
                    for (int i=1;i<=n;i++)if(huiwen(i))num++;
                    cout<<num;
                    return 0;
                }
                

                AC

                刚刚才发现我的代码(完整版),居然是最短的

              • 1
                @ 2023-5-27 20:05:11
                #include <bits/stdc++.h>
                using namespace std;
                bool huiwen(int n1)
                {
                    int n2 = n1, sum = 0;
                    while (n1 > 0)
                    {
                        sum = sum * 10 + n1 % 10;
                        n1 /= 10;
                    }
                    if (sum == n2) return true;
                    else return false;
                }
                int main()
                {
                    int n, sum = 0;
                    cin >> n; 
                    for (int i = 1; i <= n; i++)
                        if (huiwen(i)) sum += 1;
                    cout << sum << endl;
                    return 0;
                }
                
                
                • 1
                  @ 2023-1-21 12:03:39
                  #include<bits/stdc++.h>
                  using namespace std;
                  int n,ans;
                  int hw(int h){
                  	int sum=0;
                  	while(h>0){
                  		sum=sum*10+h%10;
                  		h/=10;
                  	}
                  	return sum;
                  }
                  int main(){
                  	cin>>n;
                  	for(int i=1;i<=n;i++)
                  		if(hw(i)==i)
                  			ans++;
                  	cout<<ans;
                  	return 0;
                  }
                  
                  • 1
                    @ 2022-12-17 16:44:03
                    #include <iostream>
                    using namespace std;
                    bool huiwen(int n1)
                    {
                        int n2 = n1, sum = 0;
                        while (n1 > 0)
                        {
                            sum = sum * 10 + n1 % 10;
                            n1 /= 10;
                        }
                        if (sum == n2) 
                        {
                            return true;
                        }
                        else return false;
                    }
                    int main()
                    {
                        int n, sum = 0; 
                        cin >> n;
                        for (int i = 1; i <= n; i++)
                        {
                            if (huiwen(i)) 
                            {
                                sum += 1;
                            }
                        }
                        cout << sum << endl;
                        return 0;
                    }
                    
                    • 1
                      @ 2022-10-9 21:04:21

                      emm。。。。。。 啥也不想说

                      using namespace std;
                      bool huiwen(int n1)
                      {
                      int n2 = n1, sum = 0;
                      while (n1 > 0)
                      {
                      sum = sum * 10 + n1 % 10;
                      n1 /= 10;
                      }
                      if (sum == n2) return true;
                      else return false;
                      }
                      int main()
                      {
                      int n, sum = 0;
                      cin >> n;
                      for (int i = 1; i <= n; i++)
                      if (huiwen(i)) sum += 1;
                      cout << sum << endl;
                      return 0;
                      }
                      
                      
                      • @ 2024-1-23 22:48:33

                        这位仁兄,难道不会引用吗? 得补上这个

                        #include <iostream>
                        
                    • 1
                      @ 2022-9-12 8:40:53

                      首先要计算出该数是几位数,用while循环,只要该数一直大于0,就让该数不断除以10,算出是几位数, 保存在 i 中.

                      #include <iostream>
                      using namespace std;
                      bool aaa(int x)//判断回文的代码
                      {
                          int sum=0, i=1, y=x, z=x;
                          while (y>=10)
                          {
                              i*=10;//用 i 保存位数
                              y/=10;
                          }
                          while (z>0)
                          {
                              a+=z%10*i;
                              i/=10;
                              z/=10;
                          }
                          if (a==x) return 1;
                          else return 0;
                      }
                      int main()
                      {
                          int n, a=0;
                          cin>>n;
                          for (int i=1;i<=n;i++) if (aaa(i)) a++;
                          cout<<a;
                          return 0;
                      }
                      
                      • 1
                        @ 2022-8-4 21:55:10

                        这题可以用字符串,for循环,reverse翻转后比较,一样就输出,不一样就continue

                        • @ 2022-8-19 18:58:34

                          请举个栗子,谢谢

                        • @ 2023-7-6 20:29:29

                          怎么编,请写个代码,谢谢

                        • @ 2024-1-23 22:53:45

                          不知道这样行不行

                          #include <iostream>
                          using namespace std;
                          bool hui(int x)
                          {
                              int sum=0, i=1, y=x, z=x;
                              while (y>=10)
                              {
                                  i*=10;
                                  y/=10;
                              }
                              while (z>0)
                              {
                                  a+=z%10*i;
                                  i/=10;
                                  z/=10;
                              }
                              if (a==x) return 1;
                              else return 0;
                          }
                          int main()
                          {
                              int n, a=0;
                              cin>>n;
                              for (int i=1;i<=n;i++) if (hui(i)) a++;
                              cout<<a;
                              return 0;
                          }
                          
                      • 0
                        @ 2024-4-30 21:07:56

                        废话少说,上AC代码

                        #include <bits/stdc++.h> 
                        int n,s;
                        using namespace std;
                        bool huiwen(int n1)//自定义布尔回文函数
                        {
                            int n2 = n1, sum = 0;
                            while (n1 > 0)
                            {
                                sum = sum * 10 + n1 % 10;
                                n1 /= 10;
                            }
                            if (sum == n2) return true;
                            else return false;
                        }
                        int main()
                        {
                            cin >> n;
                            for (int i = 1;i<=n;i++)
                            {
                                if (huiwen(i)) s++;//判断计数
                            }
                            cout << s;
                            return 0;
                        }
                        

                        点个赞吧

                        • 0
                          @ 2024-1-23 22:42:02

                          用python不香吗?

                          def ishui(n:int):
                              ns=list(str(n))
                              le=len(ns)-1
                              mil = len(ns)//2
                              for i in range(mil):
                                  if ns[i] != ns[le-i]:
                                      del ns,le,mil,i,n
                                      return 0
                              del ns,le,mil,n
                              return 1
                          cin = int(input())
                          ans = 0
                          for i in range(1,cin+1):
                              if ishui(i):
                                  ans += 1
                          print(ans)
                          del cin,ans,i
                          

                          最后还要清除痕迹......

                          • 0
                            @ 2024-1-18 19:04:57

                            判断回文

                            #include <bits/stdc++.h>
                            using namespace std;
                            bool rev(string s){//编写翻转函数
                                string s1;
                                for (int i = s.length() - 1; i >=  0; i--){
                                    s1=s1+s[i]; 
                                }
                                return (s1==s);
                            }
                            

                            加上bool值,是为1,否为0 image 别想复制hhhhhhhhhh

                            • @ 2024-1-23 22:55:10

                              注意题解格式

                              #include <bits/stdc++.h>
                              using namespace std;
                              bool rev(string s){//编写翻转函数
                                  string s1;
                                  for (int i = s.length() - 1; i >=  0; i--){
                                      s1=s1+s[i]; 
                                  }
                                  return (s1==s);
                              }
                              
                              
                          • -5
                            @ 2022-4-24 16:02:53

                            鼓励大家写题解,但注意题解格式。

                            给代码两端加上这个会舒服一些

                            ```cpp

                            你的代码

                            ```

                            </span>

                            这个点在键盘的左上角tab上面那个键,注意切换输入法

                            #include<iostream>
                            using namespace std;
                            int main()
                            {
                                int n;
                                cin>>n;//这是一个注释
                                return 0;
                            } 
                            

                            请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

                            抄袭题解一经发现直接取消成绩。

                            • 1

                            信息

                            ID
                            149
                            时间
                            1000ms
                            内存
                            128MiB
                            难度
                            3
                            标签
                            递交数
                            1198
                            已通过
                            655
                            上传者