LeetCode2894 分类求和并作并作差
计算区间内特定整数和的差值
一、引言
在编程学习和实际应用中,经常会遇到对给定区间内的整数按照一定规则进行求和,并计算差值的问题。今天我们就来探讨这样一道有趣的题目:给定两个正整数 n
和 m
,需要分别求出区间 [1, n]
内所有不能被 m
整除的整数之和(记为 num1
)以及所有能被 m
整除的整数之和(记为 num2
),最后返回 num1 - num2
的差值。接下来我们看看如何用 C 语言来解决这个问题。
二、题目分析
要解决这个问题,核心思路就是遍历从 1
到 n
的所有整数,针对每个整数判断它是否能被 m
整除,然后分别累加到对应的和变量中,最后再计算两者的差值。
三、代码实现
#include <stdio.h>
int differenceOfSums(int n, int m);
int main() {
int n = 10; // 示例中设定的区间上限
int m = 3; // 示例中用于判断整除的数
int result = differenceOfSums(n, m);
printf("在区间[1, %d]内,按照能否被%d整除计算得到的差值为: %d\n", n, m, result);
return 0;
}
int differenceOfSums(int n, int m) {
int num1 = 0;
int num2 = 0;
for (int i = 1; i <= n; i++) {
if (i % m!= 0) {
num1 += i;
}
else {
num2 += i;
}
}
return num1 - num2;
}
四、代码解释
differenceOfSums
函数部分:- 首先,我们定义了两个整型变量
num1
和num2
,并初始化为0
,它们分别用于累加两种不同情况的整数和。 - 接着通过
for
循环,循环变量i
从1
开始,每次递增1
,直到i
不超过n
为止。在每次循环中:- 使用取余运算符
%
判断i
是否能被m
整除。如果i % m!= 0
,说明i
不能被m
整除,那么就把i
累加到num1
中,通过num1 += i
语句实现。 - 反之,如果
i % m == 0
,表明i
能被m
整除,此时就把i
累加到num2
中,即执行num2 += i
语句。
- 使用取余运算符
- 最后,函数返回
num1 - num2
的值,也就是我们要求的差值。
- 首先,我们定义了两个整型变量
main
函数部分:- 在这里定义了
n
和m
两个变量,并且给它们赋予了示例值(当然,你可以根据自己的需求修改这两个值来测试不同情况)。 - 调用
differenceOfSums
函数,将返回的结果存储在result
变量中,然后通过printf
函数将相关信息和结果进行输出展示,方便我们直观地看到计算得到的差值情况。
- 在这里定义了
五、总结
通过这样一个简单的编程示例,我们可以看到,在处理涉及区间内整数按条件求和及求差值这类问题时,只要清晰地分析题目要求,利用基本的循环和条件判断语句就能很好地解决问题。同时,这也是 C 语言中基础操作的一种实际应用,希望对大家学习 C 语言编程有所帮助,也欢迎大家一起探讨更多有趣的编程题目呀!