您的位置:首页 > 其它

1004

2016-05-19 21:09 274 查看
题目编号:1004

题目大意:一组数,第1-7个是1-7,从第8个开始,看是否能够被2,3,5和7分解,求这个数组。

解题思路:这个题意理解了很好做题,按照原题什么卑微的数,我觉得就永远做不出来了,忒抽象了。这个题目的主要问题在于求这个数组,数组先求出来,作为预处理部分,那                      么后面的输出就很容易了。首先创建个足够用的数组,然后创建,a,b,c,d4个形参。目的在于存储从开始到结束过程中所要表示的一些数的痕迹。一开始,初始化第一个                      为1,4个形参为1.,然后从2开始循环到结束。首先是到数组i的数为形参,a,b,c,d数组里面的数乘2,3,5,7里面的最小数。然后下面1个大条件语句,嵌套内4个小
                      的条件语句。主要是判断数组第i个数是哪个参数乘过来的,然后参数加1,目的是对于第i个数进行,2,3,5,6分解,即得到第i个卑微的数。最后输出即可。

做题感想:英文题目太抽象,感觉还是中文魅力大点。最后还是搜的原题才知道的题目意思。#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int i,a,b,c,d,n;
int arr[5850];
arr[1]=1;
a=b=c=d=1;
for(i=2;i<=5842;i++)
{
arr[i]=min(arr[a]*2,min(arr[b]*3,min(arr[c]*5,arr[d]*7)));
if(arr[i]==arr[a]*2)
a++;
if(arr[i]==arr[b]*3)
b++;
if(arr[i]==arr[c]*5)
c++;
if(arr[i]==arr[d]*7)
d++;
}
while(cin>>n&&n)
{
cout<<"The "<<n;
if(n%10==1&&n%100!=11)cout<<"st ";
else if(n%10==2&&n%100!=12)cout<<"nd ";
else if(n%10==3&&n%100!=13)cout<<"rd ";
else cout<<"th ";
cout<<"humble number is "<<arr
<<"."<<endl;

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: