HDU 2010 水仙花數 水題 解法
博主剛開始練習ACM,打算時時刻刻記錄下自己的進步,並和大家做分享,希望大家能多多指教。
題目:
春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:
“水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=1^3+5^3+3^3。
現在要求輸出所有在m和n範圍內的水仙花數。
input:
輸入數據有多組,每組佔一行,包括兩個整數m和n(100<=m<=n<=999)。
output:
對於每個測試實例,要求輸出所有在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開;
如果給定的範圍內不存在水仙花數,則輸出no;
每個測試實例的輸出佔一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
這道題其實是一個水題,現在開始上代碼。
#include<iostream>
using namespace std;
int main()
{
int n,m;
int times=0;
int sum1,sum2,sum3;
while(cin>>n>>m)
{
times=0;
int temp;
if(m>n)
{
temp=m;
m=n;/*題目中沒做要求,我自己加的*/
n=temp;
}
if(n>999||m<100)
{
continue;
/*題目中其實並沒有要求,自己加的*/
}
for(int i=m;i<=n;i++)
{
int mid=i;
while(mid)
{
sum1=mid%10;/*個位*/
mid/=10;
sum2=mid%10;/*十位*/
mid/=10;
sum3=mid%10;/*百位*/
mid/=10;
}
if(sum1*sum1*sum1+ sum2*sum2*sum2+ sum3*sum3*sum3==i&×==0)
{
cout<<i;/*第一次直接輸出來數字*/
times++;
}
else if(sum1*sum1*sum1+ sum2*sum2*sum2+ sum3*sum3*sum3==i)
{
cout<<" "<<i;/*每次輸出數字前先輸出空格*/
times++;
}
else
continue;
}
if(times==0)
cout<<"no"<<endl;
else
cout<<endl;
}
return 0;
}