三连击(升级版)(洛谷-P1618)
生活随笔
收集整理的这篇文章主要介绍了
三连击(升级版)(洛谷-P1618)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。
输入输出格式
输入格式:
三个数,A B C。
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。
输入输出样例
输入样例#1:
1 2 3
输出样例#1:
192 384 576
219 438 657
273 546 819
327 654 981
源代码
#include<iostream> using namespace std; int main() {int a,b,c;int number[10]={0};int sum=0;int i,j,m,n;int flag=0;cin>>a>>b>>c;//输入比例for(i=123;i*double(1.0*c/a)<=987;i++)//根据题意,范围区间在(123,987,){for(j=1;j<10;j++) number[j]=0;//每一次都将记录器归零/*计算第一个数*/ number[i/100]=1;//百位记为1number[i/10%10]=1;//十位记为1number[i%10]=1;//个位记为1m=i*double(1.0*b/a);//计算与第一个数成比例的第二个数number[m/100]=1;//百位记为1number[m/10%10]=1;//十位记为1number[m%10]=1;//个位记为1n=i*double(1.0*c/a);//计算与第一、二个数成比例的第三个数number[n/100]=1;//百位记为1number[n/10%10]=1;//十位记为1number[n%10]=1;//个位记为1for(sum=0,j=1;j<10;j++) sum+=number[j];//累加9个计数器if(sum==9)//若结果为9,说明符合题意{flag=1;//记录标志cout<<i<<" "<<m<<" "<<n<<endl;//输出符合题意的数}}if(flag==0) cout<<"No!!!"<<endl;//记录标志为0,说明不存在成比例的数return 0; }
总结
以上是生活随笔为你收集整理的三连击(升级版)(洛谷-P1618)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 信息学奥赛C++语言:幸运奶牛
- 下一篇: 数字反转(升级版)(洛谷-P1553)