《数据结构实验指导-C++语言版》 计算1~n与1~m每一项相互乘积的和

《数据结构实验指导-C++语言版》 计算1~n与1~m每一项相互乘积的和 题目描述给定两个正整数nnn和mmm请编写程序求 1~nnn与 1~mmm每一项相互乘积的和。输入格式输入在一行中给出两个正整数nnn和mmm均不超过 100其间以空格分隔。输出格式在一行中输出题面中要求的值。输入样例5 3输出样例90解题思路题目要求计算∑i1n∑j1mi×j\sum_{i1}^{n}\sum_{j1}^{m} i \times j∑i1n​∑j1m​i×j。由乘法分配律可知∑i1n∑j1mi×j(∑i1ni)×(∑j1mj)\sum_{i1}^{n}\sum_{j1}^{m} i \times j \left(\sum_{i1}^{n} i\right) \times \left(\sum_{j1}^{m} j\right)i1∑n​j1∑m​i×j(i1∑n​i)×(j1∑m​j)即 1 到nnn的累加和乘以 1 到mmm的累加和无需二重循环。核心思想利用乘法分配律把双重累加化简为两个累加和之积。时间复杂度O(nm)O(nm)O(nm)只需两次单层循环求和。空间复杂度O(1)O(1)O(1)。代码流程说明读入两个正整数nnn和mmm。循环求12⋯n12\cdotsn12⋯n累加到sumN。循环求12⋯m12\cdotsm12⋯m累加到sumM。输出sumN * sumM并换行。代码实现#includeiostreamusingnamespacestd;intmain(){intn,m;cinnm;longlongsumN0,sumM0;for(inti1;in;i)sumNi;for(inti1;im;i)sumMi;coutsumN*sumMendl;return0;}代码流程图开始读入 n, msumN 和 sumM 初始化为 0循环求 1 到 n 的和存入 sumN循环求 1 到 m 的和存入 sumM输出 sumN 乘以 sumM结束解题流程图求 1 到 n 与 1 到 m 每一项乘积的和读入 n 和 m求 1 到 n 的累加和求 1 到 m 的累加和两个累加和相乘输出结果