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

    运行结果:

  • 相关阅读:
    不干就不需要知道,不需要知道就不想知道,不想知道就永远不知道,猪混几十年还是猪
    Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)
    IT生涯, 我的常用软件清单
    WIN10以后如果Manifest中不写支持WIN10的话,获取版本号的API获取的是6
    大促准备流程
    T4模板合并js
    maven/eclipse搭建ssm(spring+spring mvc+mybatis)
    如何理解分布式和区块链技术
    MaidSafe.net,一个完全去中心的化的云存储系统
    Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植
  • 原文地址:https://www.cnblogs.com/kaml8/p/9517582.html
Copyright © 2011-2022 走看看