#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int n,p,a,b,c;
while(cin>>n>>a>>b>>c){
int res=0,I,J;
int p = a*100+b*10+c;
for(int i=1;i<=9;i++){
for(int j=0;j<=9;j++){
int price = i*10000+p*10+j;
if(price%n==0){
res=max((price/n), res);
I=i;J=j;
}
}
}
if(res==0){
printf("%d",0);
}else {
printf("%d %d %d\n",I,J,res);
}
}
}
// 64 位输出请用 printf("%lld")
打卡:005;
【题目大意】:N 只火鸡的价格为$ _XYZ_,火鸡的总数 N 在 1 到 99 之间。价格由五位数组成,两边的数字由于褪色而看不清,所以只能看到中间的三位数。假设第一个数字非零,每只火鸡的价格是整数,并且所有火鸡的价格相同。给定 N,X,Y 和 Z,编写一个程序来猜测两边褪色的数字和火鸡的原始价格。如果有多个价格符合题意,那么输出最昂贵的那个。
算法思路:枚举
关键点:题目要“如果有多个价格符合题意,那么输出最昂贵的”;我是用i遍历第一个缺失的数,用j遍历最后一个缺失的数,起初我想把每个i,j以及对应的价格存起来,然后找到最贵的输出;后来发现i和j是从小到大遍历的,也就是说总价格也是越来越大的;那么最后一个满足条件的总价格求出的单价就是最贵的;直接遍历到最后,输出就行;

京公网安备 11010502036488号