那么,又是我。 在过去的几周里,我已经解决了很多与总和和数字有关的问题,并且到了可以轻松解决它们的地步。 但是我发现了一个我无法解决的问题,所以我来这里问你们是否有空闲时间来帮助我。 我对此非常感谢。 因此,问题是我有一个数字n和一个数字m,有2个和,所有小于或等于n的数字之和,以及所有小于或等于m的数字之和。 有一个变量S,它们是这些和之间的差,但是S是从.in文件中获得的。 问题是我必须在.in文件中键入S的值,并编写代码以使我在.out文件中获得n的所有值和m的所有值。 例如,如果我在.in文件中放入10,我必须在.out文件中得到n:10,m:9,n:4,m:0。
我做了这样的事情,但这是错误的,因为我只得到n和m的和,但我没有n和m。
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int main()
{
ifstream inFile;
inFile.open("s2.in");
int S;
inFile >> S;
int n;
int m;
int Sgn = 0;
int Sgm = 0;
int c = 1;
int r = 1;
//Sum n
for ( int i = 1; i <= n; i++ ){
Sgn += c;
c += r;
}
//Sum m
for ( int i = 1; i <= m; i++ ){
Sgm += c;
c += r;
}
S = Sgn - Sgm;
ofstream out("s2.out");
out << "\n n: " << n << "\n m: " << m << endl;
}
且1≤S≤2.000.000.000; n必须是> m;
所以我可以做这样的事情:
if ( n > m ){
//Sum n
for ( int i = 1; i <= n; i++ ){
Sgn += c;
c += r;
}
//Sum m
for ( int i = 1; i <= m; i++ ){
Sgm += c;
c += r;
}
S = Sgn - Sgm;
}
例如,如果n:10和m:9。它将是(1 + 2 + ... + 10)-(1 + 2 + ... + 9)= 10 并且如果n:4和m:0。它将是(1 + 2 + 3 + 4)-0 = 10