2 条题解
-
0
P1008 [NOIP 1998 普及组] 三连击——题解
解题思路
只需枚举第一个三位数 。由比例可直接得到 、。把三个数的九个数位统计起来,检查 1 到 9 是否各出现一次且 0 没出现。枚举上限可以取 329,因为 仍需是三位数。
复杂度分析
枚举数量为常数,时间与空间复杂度均为 。
C++17 参考代码
#include <bits/stdc++.h> using namespace std; int main(){ for(int a=123;a<=329;a++){ int b=2*a,c=3*a; int cnt[10]={0},x=a,y=b,z=c; while(x){cnt[x%10]++;x/=10;} while(y){cnt[y%10]++;y/=10;} while(z){cnt[z%10]++;z/=10;} bool ok=cnt[0]==0; for(int i=1;i<=9;i++) if(cnt[i]!=1) ok=false; if(ok) cout<<a<<' '<<b<<' '<<c<<'\n'; } return 0; } -
0
#include <bits/stdc++.h> using namespace std; int main(){ for(int a=123;a<=329;a++){ int b=2a,c=3a; int cnt[10]={0},x=a,y=b,z=c; while(x){cnt[x%10]++;x/=10;} while(y){cnt[y%10]++;y/=10;} while(z){cnt[z%10]++;z/=10;} bool ok=cnt[0]==0; for(int i=1;i<=9;i++) if(cnt[i]!=1) ok=false; if(ok) cout<<a<<' '<<b<<' '<<c<<'\n'; } return 0; }
- 1
信息
- ID
- 4913
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
粤公网安备44195502000195号