1 条题解
-
1
以下是解决这个问题的 C++ 代码:
#include <iostream> using namespace std; int main() { int num; cin >> num; // 读取输入的整数 // 初始化三个布尔值,用于标记是否能被3,5,7整除 bool divisibleBy3 = (num % 3 == 0); bool divisibleBy5 = (num % 5 == 0); bool divisibleBy7 = (num % 7 == 0); // 判断是否能被3,5,7整除,并输出相应信息 if (divisibleBy3 && divisibleBy5 && divisibleBy7) { cout << "3 5 7" << endl; // 能同时被3,5,7整除 } else if (divisibleBy3 && divisibleBy5) { cout << "3 5" << endl; // 只能被3和5整除 } else if (divisibleBy3 && divisibleBy7) { cout << "3 7" << endl; // 只能被3和7整除 } else if (divisibleBy5 && divisibleBy7) { cout << "5 7" << endl; // 只能被5和7整除 } else if (divisibleBy3) { cout << "3" << endl; // 只能被3整除 } else if (divisibleBy5) { cout << "5" << endl; // 只能被5整除 } else if (divisibleBy7) { cout << "7" << endl; // 只能被7整除 } else { cout << "n" << endl; // 不能被3,5,7整除 } return 0; }
这段代码首先读取用户输入的整数,然后使用模运算符
%
来判断这个数是否能被3、5、7整除。根据题目要求,我们使用布尔值来标记每个除数的整除情况,然后根据这些标记输出相应的信息。如果这个数能同时被3、5、7整除,我们输出 "3 5 7";如果只能被其中两个数整除,我们按照从小到大的顺序输出这两个数;如果只能被其中一个数整除,我们输出这个数;如果都不能整除,我们输出 "n"。 当然,我们可以简化代码,使其更加简洁。下面是一个简化版本的代码:#include <iostream> using namespace std; int main() { int num; cin >> num; // 读取输入的整数 bool by3 = num % 3 == 0; bool by5 = num % 5 == 0; bool by7 = num % 7 == 0; if (by3 && by5 && by7) { cout << "3 5 7" << endl; } else if (by3 && by5) { cout << "3 5" << endl; } else if (by3 && by7) { cout << "3 7" << endl; } else if (by5 && by7) { cout << "5 7" << endl; } else if (by3) { cout << "3" << endl; } else if (by5) { cout << "5" << endl; } else if (by7) { cout << "7" << endl; } else { cout << "n" << endl; } return 0; }
这个版本的代码与之前的逻辑相同,但去掉了一些不必要的注释和变量声明,使其看起来更加简洁。然而,这个代码的逻辑分支较多,我们可以通过枚举所有可能的情况来进一步简化:
#include <iostream> using namespace std; int main() { int num; cin >> num; // 读取输入的整数 int count = 0; if (num % 3 == 0) count++; if (num % 5 == 0) count += 2; if (num % 7 == 0) count += 4; switch (count) { case 7: cout << "3 5 7" << endl; break; case 3: cout << "3 7" << endl; break; case 5: cout << "5 7" << endl; break; case 6: cout << "3 5" << endl; break; case 1: case 2: case 4: switch (count) { case 1: cout << "3" << endl; break; case 2: cout << "5" << endl; break; case 4: cout << "7" << endl; break; } break; default: cout << "n" << endl; break; } return 0; }
在这个版本中,我们使用了一个整数
count
来记录num
能被哪些数整除。然后,我们使用switch
语句来简化多个if-else
语句。这种方法减少了代码的复杂性,使其更加简洁。
信息
- ID
- 622
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 44
- 已通过
- 15
- 上传者