zoukankan      html  css  js  c++  java
  • ACM题目 1434: [蓝桥杯][历届试题]回文数字

    题目描述
    观察数字:12321,123321  都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 

    本题要求你找到一些5位或6位的十进制数字。满足如下要求: 
    该数字的各个数位之和等于输入的整数。 
    输入
    一个正整数  n  (10< n< 100),  表示要求满足的数位和。
    输出
    若干行,每行包含一个满足要求的5位或6位整数。 
    数字按从小到大的顺序排列。 
    如果没有满足条件的,输出:-1 
    样例输入
    44 
    样例输出
    99899
    499994
    589985
    598895
    679976
    688886
    697796
    769967
    778877
    787787
    796697
    859958
    868868
    877778
    886688
    895598
    949949
    958859
    967769
    976679
    985589
    994499
    思路:
    可以用两个方法来判断,一个方法用来判断是否是回文串,另一个方法判断各位数字之和是否等于给定的数字
    但是代码编译以后显示只有17%的用例是通过的
    错误代码:
    #include<stdio.h>
    int turn (int num)//判断是否是回文数字
    {
        int temp=0;
        while(num!=0)
        {
            temp=temp*10+num%10;
            num=num/10;
        }
        return temp;
    }
    int add(int num)//计算各位数字之和
    {
        int sum=0;
        while(num!=0)
        {
            sum=sum+num%10;
            num=num/10;
        }
        return sum;
    }
    int main()
    {
        int i,n;
        int sum;
        scanf("%d",&n);
        int flag=0;
        for(i=10000;i<=999999;i++)
        {
            sum=add(i);
            
            if(i==turn(i)&&sum==n)
            {
                flag=1;
                printf("%6d
    ",i);
            }
        }
        if(flag=0)
        {
            printf("-1
    ");
        }
        
        return 0;
    }
    

      是因为

    if(flag=0)
        {
            printf("-1
    ");
        }
    这一部分应该是单独的逻辑关系,而我把它混在for循环内部了,
    另外一个错误就是判断符号和数字是否相等的时候应该用两个等于号,而不是一个
     正确代码:
    #include<stdio.h>
    int turn (int num)//判断是否是回文数字
    {
        int temp=0;
        while(num>0)
        {
            temp=temp*10+num%10;
            num=num/10;
        }
        return temp;
    }
    int add(int num)//计算各位数字之和
    {
        int sum=0;
        while(num>0)
        {
            sum=sum+num%10;
            num=num/10;
        }
        return sum;
    }
    int main()
    {
        int i,n;
        scanf("%d",&n);
        int flag=0;
        for(i=10000;i<1000000;i++)
        {
            if(i==turn(i)&&n==add(i))
            {
                flag=1;
                printf("%d
    ",i);
            }  
        }
        if(flag==0)
            {
            printf("-1
    ");
            }
        return 0;
    }
    
    
    

      

    
    
  • 相关阅读:
    ruby2.2.2在msvc2010上编译
    msvc2010生成的指令序列有问题,可能跟pgo有关
    Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.
    正则总结
    实现点击按钮全选功能
    轮播图(省代码方法)
    js实现复制URL功能
    字符串的常用方法
    两种文件上传的实现-Ajax和form+iframe
    jquery中attr和prop的区别
  • 原文地址:https://www.cnblogs.com/redzzy/p/13678157.html
Copyright © 2011-2022 走看看