zoukankan      html  css  js  c++  java
  • 水仙花数

      春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

    输入描述:

    输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。

    输出描述:

    对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
    如果给定的范围内不存在水仙花数,则输出no;
    每个测试实例的输出占一行。

    示例1

    输入

    100 120
    300 380

    输出

    no
    370 371

    好多人不知道格式怎么弄,先普及一下:
    1.“输入数据有多组,每组占一行“
        我一开始接触g++时也是先想到用数组输入,纳闷数组没有限制终止条件。后来明白还有个东西叫"~scanf"。把代码嵌入到while(~scanf("%d",&n)){//代码段}中就行了。它的原理是:
        a.正常输入的时候,scanf返回输入的数字如1,2,3等等,对这些数字取非,不会成为0,就会执行循环;
        b.错误输入,就是没有输入的时候,scanf返回的是EOF(End Of File),EOF=-1,对EOF取非,即对-1取非得到0,就会跳出循环。
    2."要求从小到大排列在一行内输出,之间用一个空格隔开"
        这里其实包含了两层意思,一个是要求各输出间有空格,另一个是最后一个输出后面没有空格。
    所以可以添加一层if/else判断语句,并在各子语句后输出 换行,因为可能包含多组数据。如果输出只有一个数,则将其单独考虑。如果有多个,则先输出第一个数据,再用空格+%d的方式输出剩余数据。
    思路:
        判断一个三位数是不是水仙花数,首先要得到它的百、十、个位上的数字,百位可以将其整除以100,十位可以将其整除以10再除以10取其余数,个位则直接将其除以10取余。
        有多组输入数据,意味着输出结果有多个,所以可以定义一个全局变量的整形数组,将输出结果保存在数组中,并用一个初始值为0的变量计数。

    代码如下:

     1 #include<stdio.h>
     2 int s=0;
     3 int w[1000]={0};
     4 void judge(int m,int n)
     5 {
     6     int a,b,c,i;
     7     for(i=m;i<=n;i++)
     8     {
     9         a=i/100;
    10         b=(i/10)%10;
    11         c=i%10;
    12         if(i==a*a*a+b*b*b+c*c*c)
    13         {
    14             w[s]=i;
    15             s++;
    16         }
    17     }
    18 }
    19 int main()
    20 {
    21     int m,n;
    22     int i=0;
    23     while(~scanf("%d %d",&m,&n))
    24     {
    25         judge(m,n);
    26         if(s==0)
    27             printf("no
    ");
    28         else if(s==1)
    29             printf("%d
    ",w[0]);
    30         else
    31         {   
    32             printf("%d",w[0]);
    33             for(i=0;i<s;i++)
    34                 printf(" %d",w[i]);
    35             printf("
    ");
    36         }
    37     }
    38     return 0;
    39 }

    输入:100 1000

    运行结果:

  • 相关阅读:
    PAT 甲级 1132 Cut Integer (20 分)
    AcWing 7.混合背包问题
    AcWing 9. 分组背包问题
    AcWing 5. 多重背包问题 II
    AcWing 3. 完全背包问题
    AcWing 4. 多重背包问题
    AcWing 2. 01背包问题
    AcWing 875. 快速幂
    AcWing 874. 筛法求欧拉函数
    AcWing 873. 欧拉函数
  • 原文地址:https://www.cnblogs.com/kaml8/p/9517582.html
Copyright © 2011-2022 走看看