我是dalao小菜鸡过来寻求dalao的帮助
题目: 题目描述 小名看电视学到一个数数的游戏,几个人在一起数数,遇到数字中有7,或者是7的倍数的就不用讲出来,而是站起来!请编程把所有应该站起来的数显示出来,数据间有空格隔开,每行最多输出10个数!如果一个数都没有就输出‘NO’。
输入 一个正整数 n(1 <= n <= 32767)
输出 输出有7或者能被7整除的数,数据间空格隔开,每行最多10个!
样例输入
100
样例输出
7 14 17 21 27 28 35 37 42 47
49 56 57 63 67 70 71 72 73 74
75 76 77 78 79 84 87 91 97 98
我写的沙雕睿智答案:
#include<iostream>
using namespace std;
const int qwq = 1e6+10;
int a[qwq];
int s[qwq],cnt,num = 2;
void zhao(){
s[1] = 7;
for(int i = 10;i <= 99;i++){
if(i % 10 == 7 || i/10%10 ==7 ){
s[num] = i;
num++;
cnt++;
}
if(i % 7 == 0){
s[num] = i;
num++;
cnt++;
}
}
for(int i = 100;i <= 999;i++){
if(i % 10 == 7 || i/10%10 == 7 || i/100%10 == 7){
s[num] = i;
num++;
cnt++;
}
if(i % 7 == 0){
s[num] = i;
num++;
cnt++;
}
}
for(int i = 1000;i <= 9999;i++){
if(i % 10 == 7 || i/10%10 == 7 || i/100%10 == 7 || i/1000%10 == 7){
s[num] = i;
num++;
cnt++;
}
if(i % 7 == 0){
s[num] = i;
num++;
cnt++;
}
}
for(int i = 10000;i <= 40000;i++){
if(i % 10 == 7 || i/10%10 == 7 || i/100%10 == 7 ||i/1000%10 == 7 ||i/10000%10 == 7){
s[num] = i;
num++;
cnt++;
}
if(i % 7 == 0){
s[num] = i;
num++;
cnt++;
}
}
}
int main(){
int n;
cin>>n;
zhao();
int y = 0;
for(int i = 1;i <= n;i++){
if(s[i] > n){
return 0;
}
if(s[i] == s[i+1]){
continue;
}
cout<<s[i]<<" ";
y++;
if(y % 10 == 0){
cout<<endl;
}
}
return 0;
}
为什么最后80分,没有AC,请注意不是因为时间超限和空间溢出.是因为答案错误.