三连击(升级版)(洛谷-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++语言:幸运奶牛
- 下一篇: 信息学奥赛C++语言:素数的判定