1.简单描述
把三和五以及他们的倍数看作漂亮的数字,输入n,输出第n个漂亮数字,可多次运行。
2.思路
刚看到题时,想着定义一个动态数组,把从3~5*n的数中能把三和五整除的数存入动态数组中。然后访问数组输出。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,i,p;
vector<int>v;
while(cin>>n)
{
for(i=3;i<=5*n;i++)
{
if(i%3==0||i%5==0)
v.push_back(i);
}
cout<<v[n-1]<<endl; //超时 运算量太大
v.clear();
}
return 0;
}
改正后的
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,i;
vector<int>v;
for(i=3;i<=300000;i++)
{
if(i%3==0||i%5==0)
v.push_back(i);
}
while(cin>>n)
{
cout<<v[n-1]<<endl;
}
return 0;
}
3.体会
注意输出的是v[n-1]
可以先把数据存起来,然后输出。