AOJ.502 不只是水仙花
不只是水仙花
Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB
Total Submission: 1196 Submission Accepted: 347
Description
C語言里有個很著名的問題叫做水仙花數。水仙花數是一個三位數,它的各位數字的立方相加后等于該數字。多么美麗的數字??!
可是Large發現這個世界上不僅僅有水仙花,正如整數不僅僅只有三位數一樣。
Large經過仔細研究,發現有很多花比水仙花數更優美,我們現在做出如下定義:
班花數:它是一個四位數,各位數字的四次方相加后等于該數。
級花數:它是一個五位數,各位數字的五次方相加后等于該數。
校花數:它是一個六位數,各位數字的六次方相加后等于該數。
我們的任務就是,對于輸入的一個整數,判斷它是上述數的哪一種。
Input
包含多組數據,第K組數據格式如下:
第K行:每行包括一個正整數N(100
Output
每組數據輸出一行,第K組數據格式如下:
第K行:每行包括一個單詞或詞組,由對應的輸入數字確定,其內容如下
如果該數是水仙花數,輸出Daffodil
如果該數是班花數,輸出Class Flower
如果該數是級花數,輸出Grade Flower
如果該數是?;〝?,輸出OH~
如果該數不滿足任何一個定義,輸出一個Nothing
Sample Input
153
12345
Sample Output
Daffodil
Nothing
題意分析
給出一個數字(數字的位數介于3到6),判斷這個數字每個數位的位數次方之和是否等于這個數字。是的話按題目要求輸出相應字符串,否則就輸出Nothing。
整體思路很簡單,先算一下這個數字是幾位數,然后按照他的要求求各數位的和,判斷即可。
代碼總覽
/*
Title:AOJ.502
Author:pengwill
Date:2016-11-14
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int get(int n,int t)
{
//int ret = 0;
int temp = n;
t--;
while(t--){
n = n*temp;
}
//printf("%d
",n);
return n;
}
int main()
{
int n,a,b;
while(scanf("%d",&n) != EOF){
int cnt = 0,cnt1;
int ret = 0;
b= n;
while(b){
a = b % 10;
b = b / 10;
cnt++;
}
b= n;cnt1 = cnt;
while(cnt1--){
a = b % 10;
b = b / 10;
ret+=get(a,cnt);
}
if(ret == n){
if(cnt == 3){
printf("Daffodil
");
}else if(cnt == 4){
printf("Class Flower
");
}else if(cnt == 5){
printf("Grade Flower
");
}else if(cnt == 6){
printf("OH~
");
}
}else{
printf("Nothing
");
}
//printf("%d
",cnt);
}
return 0;
}
總結
以上是生活随笔為你收集整理的AOJ.502 不只是水仙花的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设计数据库表实现完整的RBAC(基于
- 下一篇: 2023-02-15 | 苹果 iOS