C++ 中求最小数字,数字 4 和 7,并给出和
c++server side programmingprogramming
问题描述
幸运数是指十进制表示仅包含幸运数字 4 和 7 的正整数。任务是找出数字和等于 n 的最小幸运数。
示例
如果和 = 22,则幸运数为 4477,即 4 + 4 + 7 + 7 = 22
算法
1. 如果和是 4 的倍数,则结果全是 4。 2. 如果和是 7 的倍数,则结果全是 7。 3. 如果和不是 4 或 7 的倍数,则可以减去其中一个,直到和成为另一个的倍数。
示例
#include <bits/stdc++.h> using namespace std; void luckyNumber(int sum) { int a, b; a = b = 0; while (sum > 0) { if (sum % 7 == 0) { ++b; sum = sum - 7; } else if (sum % 4 == 0) { ++a; sum = sum - 4; } else { ++a; sum = sum - 4; } } cout << "Answer = "; if (sum < 0) { cout << "-1\n" << endl; return; } for (int i = 0; i < a; ++i) { cout << "4"; } for (int i = 0; i < b; ++i) { cout << "7"; } cout << endl; } int main() { int sum = 22; luckyNumber(sum); return 0; }
编译并执行上述程序,将生成以下输出
输出
Answer = 4477