题解 | Old Bill
Old Bill
https://www.nowcoder.com/practice/17a30153e092493e8b4d13f321343927
#include <iostream> using namespace std; int main() { int n, x, y, z, k, l; //k,l分别是两边模糊的数字,n是火鸡的数量,xyz是中间三位数字 int sum, per; //sum:n只火鸡的总价格 ;per:每只火鸡的价格 int found = 0; while (scanf("%d", &n) != EOF) { if (n > 0 && n < 100) { scanf("%d %d %d", &x, &y, &z); } sum = k * 10000 + x * 1000 + y * 100 + z * 10 + l; //sum 计算位置问题:sum 的计算应该放在内层循环中,因为 k 和 l 的值在每次循环中都会改变。 for (int k = 9; k > 0; k--) { //从大到小遍历第一个模糊字 for (int l = 9; l >= 0; l--) { //从大到小遍历最后一个模糊字 sum = k * 10000 + x * 1000 + y * 100 + z * 10 + l; if (sum % n == 0) { per = sum / n; printf("%d %d %d\n", k, l, per); found = 1; break; } } if (found == 1) { break; } } if(!found) printf("0\n"); } return 0; } // 64 位输出请用 printf("%lld")
王道机试指南 文章被收录于专栏
这个专栏是参考王道机试指南中相关的练习题哦