9 条题解

  • 0
    @ 2024-5-19 14:08:20

    这道题可以用两种方式解答:

    1. 等差数列求和公式
    #include <iostream>
    using namespace std;
    int s = 0, n, s2;
    // s2表示1~n求和,s表示输入数据求和
    int main(){
    	cin >> n;
    	for(int i = 1;i < n;i++){
    		int tmp;
    		cin >> tmp;
    		s += tmp;
    	}
    // 等差数列求和公式
    	s2 = (1 + n)*((n-1)/1+1)/2;
    	cout << s2 - s; 
    	return 0;
    }
    
    1. 位运算异或:
    #include <iostream>
    #include <string.h>
    #include <cstdio>
    #include <algorithm>
    #include <string>
    #include <iomanip>
    #include <math.h>
    #include <map>
    #include <set>
    #include <cstdlib>
    #include <vector>
    
    typedef long long LL;
    typedef unsigned long long ULL;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    using namespace std;
    int n, tmp, ans;
    int main()
    {
    	scanf("%d", &n);
    // 输入数据同时尽
    	for(int i = 1; i < n; i++)
    	{
    		scanf("%d", &tmp);
    		ans ^= tmp;
    		ans ^= i;
    	}
    	ans ^= n;
    	printf("%d", ans);
    	return 0;
    }
    

    信息

    ID
    2953
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    692
    已通过
    255
    上传者