不能只一味的暴力,要找规律!!!
题目描述
读取一个整数X,输出X之后的6个奇数,如果X也是奇数,那么它也算作6个奇数之一。
输入格式
一个整数X。
输出格式
所有满足条件的奇数,每个占一行。
数据范围
1≤X≤100
输入样例:
9
输出样例:
9
11
13
15
17
19
第一次代码:
#include<iostream>
using namespace std;
int main()
{
int x,num=0;
cin>>x;
if(x%2==0){//偶数
while(true){
if(num==6)
break;
if(x%2!=0){
cout<<x<<endl;
x++;num++;
}
}
}
else{//奇数
cout<<x<<endl;
while(true){
if(num==5)
break;
if(x%2!=0){
cout<<x<<endl;
x++;num++;
}
}
}
return 0;
}
不过显示超时。这时候看了眼输出样例,发现是有规律的,每个输出的都是前一个输出+2,那就好办了啊。
第二次代码
#include<iostream>
using namespace std;
int main()
{
int x;
cin>>x;
if(x%2==0)
for(int i=x+1,num=1;num<=6;i+=2,num++)
cout<<i<<endl;
else
for(int i=x,num=1;num<=6;i+=2,num++)
cout<<i<<endl;
return 0;
}
这时回过头去再看之前的代码为啥不行,发现是x++的地方放错了。
#include<iostream>
using namespace std;
int main()
{
int x,num=1;
cin>>x;
if(x%2==0){//偶数
while(true){
if(num>6)
break;
if(x%2!=0){
cout<<x<<endl;
num++;
}
x++;
}
}
else{//奇数
while(true){
if(num>6)
break;
if(x%2!=0){
cout<<x<<endl;
num++;
}
x++;
}
}
return 0;
}
之前由于x++放在if语句里边,导致while一直死循环。
小技巧:当使用while循环提交时显示超出时间限制,那么就要考虑代码陷入了死循环中。
这个真的好,收获很大