Problem 01. 水仙花數
阿新 • • 發佈:2019-01-05
Problem 01. 水仙花數
題目簡述:
“水仙花數”是值一個三位數,它各位數字的立方和等於其本身,從小到大輸出所有在[m,n]內的水仙花數並用空格隔開,若不存在則輸出no(100<=m<=n<=999)。
解題思路:
看到這個題目,我會先想到利用除法和取餘將這個三位數各位上的數字取出,再求立方和與其自身相比較。
細節處理:
本題個人認為需要注意的一點就是如何處理輸出格式。本題要求輸出的數用空格隔開,也就是說輸出的最後一個數不存在空格。
錯誤示範:for (int i=0;i<=d;i++) cout<<x[i]<<" ";
原始碼:
#include<iostream> using namespace std; int main() { int x[1010]; long long int m,n; int a=0,b=0,c=0,d=0; while(cin>>m>>n) { d=0; for(int i=m;i<=n;i++) { a=i%10; b=(i/10)%10; c=i/100;//a,b,c即各位上的數字 if(i==a*a*a+b*b*b+c*c*c) { x[d++]=i; } } if(d==0) cout<<"no"<<endl; else { for (int i=0;i<d;i++){ if (i!=d-1)cout<<x[i]<<" "; else cout<<x[i]<<endl;//處理最後一個數據後不加空格 } } } return 0; }
相似題目:發工資
已知n個老師的工資,有100、50、10、5、2、1六種紙幣,求最少準備的紙幣數目。
原始碼:
#include<iostream> using namespace std; int a[105]; int main() { int n,t; while(cin>>n) { if(n==0) break; else { for(int i=0;i<n;i++) cin>>a[i]; t=0; for(int i=0;i<n;i++) { t+=a[i]/100;//巧妙利用整除和取餘處理紙幣的張數 a[i]=a[i]%100; t+=a[i]/50; a[i]=a[i]%50; t+=a[i]/10; a[i]=a[i]%10; t+=a[i]/5; a[i]=a[i]%5; t+=a[i]/2; a[i]=a[i]%2; t+=a[i]/1; a[i]=a[i]%1; } cout<<t<<endl; } } return 0; }