题解 CF440A 【Forgotten Episode】
首先,我们来审题发现,只缺一个数
于是思路就很明确了
首先我们来算1至N的和
for(int i = 1;i <= n;i++) { sum1 += i;//求1至N的和, 因为要和已有的数的和区别,所以用sum1 }
然后算已有的数的和
for(int i = 1;i <= n - 1;i++)//由于是给定一个长度为N-1的数列, 所以是i <= n - 1 { sum2 += a[i];//求已有的数的和 }
然后做差,即可得出缺少的那一个数
完整代码:
#include<cstdio> using namespace std; const int NR = 1e5; int a[NR + 10]; int main() { int n; scanf("%d",&n); for(int i = 1;i <= n - 1;i++) { scanf("%d",&a[i]);//输入 } int sum1 = 0, sum2 = 0;//定义,sum1为1至N的和,sum2为已给出的数的和。一定要赋初值0 for(int i = 1;i <= n;i++) { sum1 += i;//求1至N的和 } for(int i = 1;i <= n - 1;i++) { sum2 += a[i];//求已有的数的和 } printf("%d",sum1 - sum2);//相减得出答案 return 0; }

浙公网安备 33010602011771号