本文主要是介绍东方 - 循环(2) - 求和计数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 解析部分:
- 求和计数
- 1002. 编程求解1+2+3+...+n
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1741. 求出1~n中满足条件的数的个数和总和
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1003. 编程求 \(1 + 3 + 5 + ... + n\)
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1004. 编程求1*2*3*...*n
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1014.编程求1+1/2+1/3+...+1/n
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1053. 求 \(100 + 97 + ... + 4 + 1\) 的值
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1054. 计算 \(1^2 + 2^2 + ... + n^2\)
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1055. 计算满足特定条件的整数个数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1056. 统计不超过1000中含有数字3的自然数个数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1057. 统计能被5整除且至少有一位是5的整数的个数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1393. 与7无关的数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1445. 找亲戚
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1449. 求满足条件的数的和
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1742. 三位回文数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1743. 五位回文偶数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1744. 纯粹的四位奇数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1745. 纯粹的五位偶数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1747. 连续递增或递减数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1750. 有0的数
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1091. 奇数及偶数和
- 问题描述
- 解题思路
- 代码实现
- 代码解析
- 1395. 小丽找数?
- 问题描述
- 解题思路
- 代码实现
- 代码解析
解析部分:
求和计数
1002. 编程求解1+2+3+…+n
问题描述
编程求解下列式子的值:
( S = 1 + 2 + 3 + … + n )
解题思路
- 接收一个整数 ( n ) 作为输入。
- 计算从 1 到 ( n ) 的自然数之和。
- 输出计算结果。
代码实现
示例代码如下:
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 从键盘读入整数n// 计算从1到n的和int sum = 0;for (int i = 1; i <= n; i++) {sum += i;}cout << sum << endl; // 输出求和结果return 0;
}
代码解析
- 程序开始时读取一个整数 ( n )。
- 使用一个for循环来累加从 1 到 ( n ) 的整数。
- 循环结束后,将累加的结果输出。
这样的方法可以确保高效计算1到( n )的自然数之和。
1741. 求出1~n中满足条件的数的个数和总和
问题描述
请求出 ( 1 ) 到 ( n ) 之间所有满足是 ( 2 ) 的倍数但不是 ( 3 ) 的倍数的数的个数和总和。
解题思路
- 遍历 ( 1 ) 到 ( n ) 的每个数。
- 判断每个数是否是 ( 2 ) 的倍数且不是 ( 3 ) 的倍数。
- 如果满足条件,则累加到总和中,并计数加一。
代码实现
示例代码如下:
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 从键盘读入整数nint count = 0; // 满足条件的数的个数int sum = 0; // 满足条件的数的总和for (int i = 1; i <= n; i++) {if (i % 2 == 0 && i % 3 != 0) {count++;sum += i;}}cout << count << endl; // 输出满足条件的数的个数cout << sum << endl; // 输出满足条件的数的总和return 0;
}
代码解析
- 程序开始时读取一个整数 ( n )。
- 使用一个for循环来遍历 ( 1 ) 到 ( n ) 的每个整数。
- 在循环内判断每个数是否是 ( 2 ) 的倍数且不是 ( 3 ) 的倍数,如果是,则将这个数加到总和中,并计数加一。
- 循环结束后,输出满足条件的数的个数和总和。
这样的方法可以确保准确地找出在 ( 1 ) 到 ( n ) 范围内,所有是 ( 2 ) 的倍数但不是 ( 3 ) 的倍数的数的个数和它们的总和。
1003. 编程求 (1 + 3 + 5 + … + n)
问题描述
编程求 (1 + 3 + 5 + … + n) 的和,其中 (n) 为输入的奇数。
解题思路
- 初始化总和为 (0)。
- 使用一个循环,从 (1) 开始,以 (2) 为步长增加,直到 (n)。
- 在每次循环中将当前值加到总和上。
- 循环结束后,输出总和。
代码实现
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 从键盘读入整数nint sum = 0; // 初始化总和为0for (int i = 1; i <= n; i += 2) {sum += i; // 将奇数加到总和上}cout << sum << endl; // 输出总和return 0;
}
代码解析
- 程序开始时读取一个整数 (n),保证输入的 (n) 为奇数。
- 使用一个for循环来遍历 (1) 到 (n) 的每个奇数,步长为 (2)。
- 在循环内将每个奇数加到总和 (sum) 中。
- 循环结束后,输出总和。
这样的方法可以确保准确地计算从 (1) 到 (n) 的所有奇数之和。
1004. 编程求123*…*n
问题描述
需要编写一个程序来求123*…*n的乘积,其中 (n) 是用户输入的整数。
解题思路
- 初始化乘积为 (1)。
- 使用一个循环,从 (1) 到 (n)。
- 在每次循环中将当前值乘到总乘积上。
- 循环结束后,输出总乘积。
代码实现
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 从键盘读入整数nint product = 1; // 初始化乘积为1for (int i = 1; i <= n; i++) {product *= i; // 将当前数乘到乘积上}cout << product << endl; // 输出乘积return 0;
}
代码解析
- 程序开始时读取一个整数 (n)。
- 使用一个for循环来遍历 (1) 到 (n) 的每个整数。
- 在循环内将每个数乘到总乘积
product
上。 - 循环结束后,输出总乘积。
这样的方法可以确保准确地计算 (1) 到 (n) 的所有整数乘积。
1014.编程求1+1/2+1/3+…+1/n
问题描述
需要编写一个程序来求编程求1+1/2+1/3+…+1/n的和,其中 (n) 是用户输入的整数。
解题思路
- 初始化总和为 (0)。
- 使用一个循环,从 (1) 到 (n)。
- 在每次循环中,将 (1/i) 加到总和上。
- 循环结束后,输出总和。
代码实现
#include <iostream>
#include <iomanip> // 用于设置输出格式
using namespace std;int main() {int n;cin >> n; // 从键盘读入整数ndouble sum = 0.0; // 初始化总和为0for (int i = 1; i <= n; i++) {sum += 1.0 / i; // 将当前的倒数加到总和上}cout << fixed << setprecision(3) << sum << endl; // 输出总和,保留3位小数return 0;
}
代码解析
- 程序开始时读取一个整数 (n)。
- 使用一个for循环来遍历 (1) 到 (n) 的每个整数。
- 在循环内将每个整数的倒数加到总和
sum
上。 - 使用
<iomanip>
库的setprecision(3)
来设置输出时保留三位小数。 - 循环结束后,输出总和。
这样的方法可以确保准确地计算 (1 + \frac{1}{2} + \frac{1}{3} + \dots + \frac{1}{n}) 的和,并以保留三位小数的形式输出。
1053. 求 (100 + 97 + … + 4 + 1) 的值
问题描述
需要编写一个程序来求序列 (100 + 97 + … + 4 + 1) 的和,这是一个每项递减 3 的序列。
解题思路
- 初始化总和为 (0)。
- 从 (100) 开始循环,每次减去 (3),直到 (1)。
- 在循环中,将每个数加到总和上。
- 循环结束后,输出总和。
代码实现
#include <iostream>
using namespace std;int main() {int sum = 0; // 初始化总和为0for (int i = 100; i >= 1; i -= 3) {sum += i; // 将当前的数加到总和上}cout << sum << endl; // 输出总和return 0;
}
代码解析
- 程序使用一个for循环来遍历 (100) 到 (1) 之间每隔 (3) 的数(包括 (100) 和 (1))。
- 在循环内将每个数加到总和
sum
上。 - 循环结束后,输出总和。
这样的方法可以确保准确地计算 (100 + 97 + \dots + 4 + 1) 的和,并输出该和的值。
1054. 计算 (1^2 + 2^2 + … + n^2)
问题描述
需要编写一个程序来计算 (1^2 + 2^2 + … + n^2) 的值,其中 (n) 是输入给定的正整数。
解题思路
- 初始化总和为 (0)。
- 循环从 (1) 到 (n),包括 (n)。
- 在每次循环中,计算当前数字的平方并将其加到总和上。
- 循环结束后,输出总和。
代码实现
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 读入nint sum = 0; // 初始化总和为0for (int i = 1; i <= n; i++) {sum += i * i; // 将当前数字的平方加到总和上}cout << sum << endl; // 输出总和return 0;
}
代码解析
- 程序开始时读取输入的整数 (n)。
- 通过一个 for 循环从 (1) 遍历到 (n)。
- 在循环内,计算每个数的平方并累加到
sum
变量。 - 循环完成后,输出累加的和
sum
。
这段代码将准确计算从 (1^2) 到 (n^2) 的和,并将结果输出。
1055. 计算满足特定条件的整数个数
问题描述
需要编写程序,从 (1) 到 (n) 中找出满足以下条件的整数数量:
- 能够被 (3) 除余 (2)
- 能够被 (5) 除余 (3)
- 能够被 (7) 除余 (2)
如果没有满足条件的整数,则输出 (0)。
解题思路
- 从 (1) 到 (n) 遍历每个整数。
- 对于每个整数,检查是否满足上述三个条件。
- 如果满足,则计数器加一。
- 遍历结束后,输出计数器的值。
代码实现
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 读入nint count = 0; // 初始化计数器为0for (int i = 1; i <= n; i++) {// 检查是否满足条件if (i % 3 == 2 && i % 5 == 3 && i % 7 == 2) {count++; // 如果满足条件,则计数器加一}}cout << count << endl; // 输出满足条件的整数个数return 0;
}
代码解析
- 程序从标准输入读取上限 (n)。
- 通过 for 循环,从 (1) 到 (n),遍历每个数字。
- 在循环中,通过条件判断检查每个数字是否同时满足三个条件。
- 满足条件时,计数器
count
增加。 - 循环结束后,输出计数器
count
的值,即为满足条件的整数个数。
这段代码能够有效地计算出在给定范围内满足特定余数条件的整数数量。
1056. 统计不超过1000中含有数字3的自然数个数
问题描述
需要编写程序来找出所有不超过1000的自然数中含有数字3的数,并计算这些数的总数。
解题思路
- 从1遍历到1000,检查每个数是否含有数字3。
- 如果一个数含有数字3,计数器增加。
- 遍历结束后,输出计数器的值,即含有数字3的自然数的总数。
代码实现
#include <iostream>
using namespace std;int main() {int count = 0; // 初始化计数器为0for (int i = 1; i <= 1000; i++) {int number = i;// 检查数字中是否含有3while (number > 0) {if (number % 10 == 3) {count++; // 如果数字中含有3,计数器加一break; // 找到3后即可停止检查当前数字}number /= 10; // 去除最后一位,继续检查下一位}}cout << count << endl; // 输出含有数字3的自然数的总数return 0;
}
代码解析
- 程序通过 for 循环遍历从1到1000的每个数。
- 对于每个数,通过一个 while 循环检查它是否含有数字3。
- 如果发现含有数字3,计数器
count
增加,并跳出当前数字的检查。 - 遍历结束后,输出
count
的值,表示含有数字3的自然数的总数。
这段代码能有效地统计出不超过1000的所有自然数中含有数字3的数的总数。
1057. 统计能被5整除且至少有一位是5的整数的个数
问题描述
需要找出1到N之间所有能被5整除且至少有一个数字是5的整数的个数。
解题思路
- 遍历从1到N的每个数。
- 检查每个数是否满足两个条件:能被5整除,且至少有一个数字是5。
- 如果满足条件,计数器增加。
- 遍历结束后,输出计数器的值,即满足条件的整数个数。
代码实现
#include <iostream>
using namespace std;int main() {int N, count = 0;cin >> N; // 从键盘读入N的值for (int i = 1; i <= N; i++) {if (i % 5 != 0) continue; // 如果数不能被5整除,则跳过int number = i;bool hasFive = false; // 标记是否含有数字5// 检查数字中是否含有5while (number > 0) {if (number % 10 == 5) {hasFive = true;break;}number /= 10;}if (hasFive) count++; // 如果含有数字5,计数器增加}cout << count << endl; // 输出满足条件的整数个数return 0;
}
代码解析
- 程序通过 for 循环遍历从1到N的每个数。
- 首先检查该数是否能被5整除,如果不能则跳过。
- 如果能被5整除,则进一步检查该数的每一位数字是否含有5。
- 如果发现含有数字5,计数器
count
增加。 - 遍历结束后,输出
count
的值,表示能被5整除且至少有一位是5的整数的个数。
通过这段代码能有效地统计出指定范围内符合条件的整数个数。
1393. 与7无关的数
问题描述
需要找出从1到n(n≤999)中与7无关的数的总和。与7无关的数是指不能被7整除且不含数字7的数。
解题思路
- 遍历从1到n的每个数。
- 对每个数检查是否与7有关:
- 判断该数是否能被7整除。
- 判断该数的任意一位是否为7。
- 如果这个数与7无关,则累加到总和中。
- 遍历完成后,输出与7无关的数的总和。
代码实现
#include <iostream>
using namespace std;bool isRelatedToSeven(int number) {// 判断数字是否能被7整除或含有数字7if (number % 7 == 0) return true;while (number > 0) {if (number % 10 == 7) return true;number /= 10;}return false;
}int main() {int n, sum = 0;cin >> n; // 从键盘读入n的值for (int i = 1; i <= n; i++) {if (!isRelatedToSeven(i)) {sum += i; // 累加与7无关的数}}cout << sum << endl; // 输出与7无关的数的总和return 0;
}
代码解析
isRelatedToSeven
函数用于判断一个数是否与7有关。如果数能被7整除或含有数字7,则返回true,否则返回false。- 主函数中,通过for循环遍历从1到n的每个数,并使用
isRelatedToSeven
函数判断是否与7有关。 - 如果数与7无关,则将其累加到总和
sum
中。 - 最后输出与7无关的数的总和。
1445. 找亲戚
问题描述
给定一个一位数( x ),找出在区间( [m, n] )内有多少个数的各个位中含有与( x )相同的数。
解题思路
- 从( m )到( n )遍历每一个整数。
- 检查每个数的各个位上是否包含数字( x )。
- 如果包含,则计数加1。
- 遍历完成后,输出计数值。
代码实现
#include <iostream>
using namespace std;int main() {int x, m, n, count = 0;cin >> x >> m >> n; // 读入x,m,nfor (int i = m; i <= n; i++) {int number = i;// 检查每个数字的每一位while (number > 0) {int digit = number % 10;if (digit == x) {count++; // 如果找到相同的数字,计数增加break; // 找到后即停止当前数的检查}number /= 10;}}cout << count << endl; // 输出计数值return 0;
}
代码解析
- 这段代码通过一个循环从( m )到( n )遍历每一个数。
- 在循环内部,通过不断取模和整除操作来检查每个数的各个位上的数字。
- 如果在某个位上找到了与( x )相同的数字,则计数加1,同时跳出循环,避免对同一个数的重复计数。
- 最后,输出在指定范围内找到的与( x )有相同位数字的数的总数。
1449. 求满足条件的数的和
问题描述
求出( 1 )至( n )之间能同时被( 2 )、( 3 )、( 5 )、( 7 )中两个及两个以上的数整除的数的总和。
解题思路
- 遍历从( 1 )到( n )的所有整数。
- 对每个整数,检查它是否能被( 2 )、( 3 )、( 5 )、( 7 )整除。
- 如果一个整数能被以上提到的至少两个数整除,则累加到总和中。
- 遍历完成后,输出总和。
代码实现
#include <iostream>
using namespace std;int main() {int n, sum = 0;cin >> n; // 读入n// 遍历1到n的每个数for (int i = 1; i <= n; i++) {int count = 0; // 计数器,用于计算能整除的个数// 检查能否被2、3、5、7整除if (i % 2 == 0) count++;if (i % 3 == 0) count++;if (i % 5 == 0) count++;if (i % 7 == 0) count++;// 如果能被2个及以上的数整除,则加到总和中if (count >= 2) sum += i;}cout << sum << endl; // 输出总和return 0;
}
代码解析
- 代码通过一个循环从( 1 )到( n )遍历每个数。
- 对于每个数,使用一个计数器来统计它能被多少个指定的数整除。
- 如果计数器的值大于或等于( 2 ),表示这个数满足条件,将其加到总和中。
- 最后,输出满足条件的所有数的总和。
1742. 三位回文数
问题描述
在指定的范围内(( m )到( n )),找出所有三位的回文数,并计算总共有多少个。
解题思路
- 遍历从( m )到( n )的所有三位数。
- 对每个数,检查它是否是回文数。回文数是指正读和倒读都相同的数。
- 如果是回文数,则打印这个数,并计数。
代码实现
#include <iostream>
using namespace std;int main() {int m, n, count = 0;cin >> m >> n; // 读入m和n// 遍历m到n的每个数for (int i = m; i <= n; i++) {int hundred = i / 100; // 百位数int unit = i % 10; // 个位数// 检查是否是回文数if (hundred == unit) {cout << i << endl; // 输出回文数count++; // 计数}}cout << count << endl; // 输出回文数的个数return 0;
}
代码解析
- 程序遍历( m )到( n )范围内的每个数。
- 对于每个数,通过整数除法和取余操作得到百位数和个位数。
- 如果百位数和个位数相等,那么这个数是一个三位的回文数,打印这个数并更新计数器。
- 遍历完成后,输出回文数的总数。
1743. 五位回文偶数
问题描述
需要找出在给定范围内(( m )到( n )),所有的五位回文偶数的个数及它们的总和。
解题思路
- 遍历从( m )到( n )的所有五位数。
- 对每个数,检查它是否是回文数,并且是偶数。
- 如果是回文偶数,则计数并累加其值。
代码实现
#include <iostream>
using namespace std;int main() {int m, n, count = 0, sum = 0;cin >> m >> n; // 读入m和n// 遍历m到n的每个数for (int i = m; i <= n; i++) {if (i % 2 != 0) continue; // 偶数检查// 将数转换为字符串,以便进行回文检查string num = to_string(i);// 检查是否是回文数if (num[0] == num[4] && num[1] == num[3]) {count++; // 计数sum += i; // 累加}}// 输出回文偶数的个数和总和cout << count << endl;cout << sum << endl;return 0;
}
代码解析
- 通过遍历,检查每个数是否满足为偶数且是回文数的条件。
- 回文数检查通过比较数的首尾数字实现。
- 若数满足条件,则对回文偶数进行计数,并累加它们的和。
- 遍历完成后,输出满足条件的回文偶数的总个数和它们的总和。
1744. 纯粹的四位奇数
问题描述
要计算从1000到( n )之间所有四位纯粹奇数的和。
解题思路
- 遍历从1000到( n )的所有数。
- 检查每个数的每一位是否都是奇数。
- 如果是纯粹奇数,则累加其值。
代码实现
#include <iostream>
using namespace std;int main() {int n, sum = 0;cin >> n; // 读入n// 遍历1000到n的每个数for (int i = 1000; i <= n; i++) {// 将数转换为字符串,以便逐位检查string num = to_string(i);// 检查是否所有位都是奇数bool isPureOdd = true;for (char digit : num) {if ((digit - '0') % 2 == 0) {isPureOdd = false;break;}}// 如果是纯粹奇数,累加if (isPureOdd) sum += i;}// 输出四位纯粹奇数的总和cout << sum << endl;return 0;
}
代码解析
- 从1000开始遍历,因为这是四位数的起始。
- 用
to_string()
将每个整数转换为字符串,这样就可以逐位检查数字是否为奇数。 - 如果所有位都是奇数,则将该数加到总和
sum
中。 - 最终,输出所有纯粹奇数的总和。
1745. 纯粹的五位偶数
问题描述
要找出从10000到( n )之间所有五位纯粹偶数的个数。
解题思路
- 遍历从10000到( n )的所有数。
- 检查每个数的每一位是否都是偶数。
- 如果是纯粹偶数,则计数器加一。
代码实现
#include <iostream>
using namespace std;int main() {int n, count = 0;cin >> n; // 读入n// 遍历10000到n的每个数for (int i = 10000; i <= n; i++) {// 将数转换为字符串,以便逐位检查string num = to_string(i);// 检查是否所有位都是偶数bool isPureEven = true;for (char digit : num) {if ((digit - '0') % 2 != 0) {isPureEven = false;break;}}// 如果是纯粹偶数,计数器加一if (isPureEven) count++;}// 输出五位纯粹偶数的总数cout << count << endl;return 0;
}
代码解析
- 从10000开始遍历,因为这是五位数的起始。
- 用
to_string()
将每个整数转换为字符串,这样就可以逐位检查数字是否为偶数。 - 如果所有位都是偶数,则计数器
count
加一。 - 最终,输出所有纯粹偶数的个数。
1747. 连续递增或递减数
问题描述
找出在100到( n )之间所有连续递增或递减的三位数,并计算这些数的总和和数量。
解题思路
- 遍历从100到( n )的所有三位数。
- 对每个数,检查它的数字是否连续递增或递减。
- 记录满足条件的数的总和和数量。
代码实现
#include <iostream>
using namespace std;int main() {int n, sum = 0, count = 0;cin >> n; // 读入n// 遍历100到n的每个数for (int i = 100; i <= n; i++) {int hundred = i / 100; // 百位int ten = (i / 10) % 10; // 十位int one = i % 10; // 个位// 判断是否为连续递增或递减if ((hundred < ten && ten < one) || (hundred > ten && ten > one)) {sum += i; // 累加符合条件的数count++; // 计数符合条件的数}}// 输出总和和数量cout << sum << endl << count << endl;return 0;
}
代码解析
- 使用三个变量(
hundred
,ten
,one
)来存储数的百位、十位和个位。 - 通过逻辑判断,检查这个数是否是连续递增或递减。
- 如果条件满足,则累加到总和
sum
中,并将计数器count
增加1。 - 最后输出符合条件的数的总和和个数。
1750. 有0的数
问题描述
请求出1∼n中含有数字 0 的数,有多少个?
解题思路
- 遍历从1到 ( n ) 的每个数。
- 对每个数,检查它的各个位上是否包含数字 0。
- 记录含有数字 0 的数的数量。
代码实现
#include <iostream>
using namespace std;int countNumbersWithZero(int n) {int count = 0;// 遍历1到n的每个数for (int i = 1; i <= n; ++i) {int num = i;// 检查每一位是否包含数字0while (num > 0) {if (num % 10 == 0) {++count; // 含有数字0,计数器加1break;}num /= 10; // 检查下一位}}return count;
}int main() {int n;cin >> n; // 读入n// 调用函数计算含有数字0的数的个数int result = countNumbersWithZero(n);// 输出结果cout << result << endl;return 0;
}
代码解析
- 使用一个循环遍历从1到n的每个数。
- 对于每个数,使用一个内部循环来检查它的每一位是否包含数字0。
- 如果某位包含数字0,则将计数器加1。
- 最后输出含有数字0的数的数量。
1091. 奇数及偶数和
问题描述
给出一个正整数n(1≤n≤1000 ),求出1,2,…n 中全部奇数和以及全部偶数的和。
解题思路
- 初始化奇数和与偶数和为0。
- 遍历从1到 ( n ) 的每个数。
- 如果当前数是奇数,则将其加到奇数和中;如果当前数是偶数,则将其加到偶数和中。
代码实现
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 读入nint oddSum = 0, evenSum = 0;// 遍历1到n的每个数for (int i = 1; i <= n; ++i) {if (i % 2 == 0)evenSum += i; // 偶数,加到偶数和中elseoddSum += i; // 奇数,加到奇数和中}// 输出结果cout << oddSum << " " << evenSum << endl;return 0;
}
代码解析
- 使用两个变量
oddSum
和evenSum
分别记录奇数和偶数的和,初始化为0。 - 遍历从1到n的每个数,如果是奇数,则加到
oddSum
中,如果是偶数,则加到evenSum
中。 - 最后输出奇数和与偶数和,中间用一个空格隔开。
1395. 小丽找数?
问题描述
小丽同学想在1∼n中找出这样的数,这个数的各个位的和不能被2整除也不能被5整除,比如 3、12、25、30、100。这些数都满足各个位的和不能被2和5整除。请你编程找出1∼n中这些数有多少个?
解题思路
- 遍历从1到 (n) 的每个数。
- 对每个数,计算其各个位的和。
- 判断这个和是否既不能被2整除也不能被5整除。
- 统计满足条件的数的个数。
代码实现
#include <iostream>
using namespace std;int digitSum(int num) {int sum = 0;while (num > 0) {sum += num % 10; // 求个位数并加到总和中num /= 10; // 去掉个位数}return sum;
}int main() {int n;cin >> n; // 读入nint count = 0;// 遍历1到n的每个数for (int i = 1; i <= n; ++i) {int sum = digitSum(i); // 计算各个位的和if (sum % 2 != 0 && sum % 5 != 0) // 判断和是否既不能被2整除也不能被5整除++count; // 满足条件的数,计数加1}// 输出结果cout << count << endl;return 0;
}
代码解析
- 定义一个函数
digitSum
用来计算一个数的各个位的和。 - 使用一个循环遍历从1到n的每个数。
- 对于每个数,调用
digitSum
函数计算其各个位的和,并判断这个和是否既不能被2整除也不能被5整除。 - 统计满足条件的数的个数并输出结果。
这篇关于东方 - 循环(2) - 求和计数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!