初级光能
067 余数为1经验值:0
题目描述 Description
将2–9填入空白处,每个数字只能用一次,使得等式成立。
输出所有满足条件的式子。
输入描述 Input Description
无
输出描述 Output Description
输出多行,每行三个数字,表示使得等式成立的四位数,一位数,三位数。
有多少组解输出多少行
多组解输出的顺序,按照字典序从小到大输出
样例输入 Sample Input
无
样例输出 Sample Output
2584 7 369 ......
徐子玄在2020-08-07 17:55:43追加了内容
各位看下我的WA代码,改下错。
#include <iostream>
#include <cstring>
using namespace std;
int count[7000];
int main() {
int x=0;
for(int i=1000;i<=9999;i++){
for(int j=1;j<=9;j++){
count[i%10]++;
count[i%100/10]++;
count[i/100%10]++;
count[i/1000]++;
count[j]++;
count[(i/j)/100]++;
count[(i/j)%10]++;
count[(i/j)%100/10]++;
for(int i=2;i<=9;i++){
if(count[i]==1){
x++;
}
}
if(x==8){
cout<<i<<" "<<j<<" "<<i/j<<endl;
}
x=0;
for(int i=1;i<=9;i++){
count[i]=0;
}
}
}
return 0;
}
资深光能
hahahaha上整段代码!
天空一声巨响,代码闪亮登场!
这题要用两重循环,分别从2~9,234~987.
定义k和b数组
k=i*j+1;
memset(b,0,sizeof(b));
//下面是统计个位数。
b[i/100]++;
b[i%100/10]++;
b[i%10]++;
b[j]++;
b[k/1000]++;
b[k%100/10]++;
b[k%10]++;
b[k/100%10]++;
bool flag=false;
for(l从2到9){
if(b[l]不等于1){
flag=true;
断绝本循环(不要用return 0)
}
}
如果(!flag&&k大于2345){
输出<<k<<" "<<j<<" "<<i<<endl;
}
不要直接抄,要懂。
不要抄袭;
抄了被批 //老师发现你在抄袭
没抄被打 //爸爸生气,你竟然没写题目!!!
接着——————(场面过于血腥)