6 条题解

  • 1
    @ 2023-6-10 19:52:06

    这道题目可以使用高斯求和公式来解决,即将n个数的和减去n(n+1)/2,剩下的就是缺失的数字。具体思路如下:

    1. 读入n和n-1个卡片编号。
    2. 对n个数进行求和,保存在sum中。
    3. 使用高斯求和公式计算1到n的和,保存在total中。
    4. 缺失的数字就是total-sum,输出即可。
    #include <iostream>
    using namespace std;
    int main() {
        int n, sum = 0;
        cin >> n;
        for (int i = 1; i < n; i++) {
            int card;
            cin >> card;
            sum += card; // 对n-1个卡片进行求和
        }
        int total = n * (n + 1) / 2; // 计算1到n的和
        cout << total - sum << endl; // 缺失的数字就是total-sum
        return 0;
    }
    
    • 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;
      }
      
      • 0
        @ 2023-12-23 20:32:05

        #include<iostream> using namespace std; const int N=1e3+10; const int INF=0x3f3f3f3f; unsigned int n,m,a; int main(){ cin>>n; for(int i=1;i<n;i++) { cin>>m; a^=m^i; } a^=n; cout<<a; }

        • 0
          @ 2023-12-5 20:42:56

          #include<bits/stdc++.h> using namespace std; int ans,n,x; int main(){ cin>>n; for(int i = 1; i < n; i ++ ) { cin>>x; ans ^= x; ans ^= i; } ans ^= n; cout<<ans; return 0; }

          • 0
            @ 2023-5-30 16:50:56
            using namespace std;
            int a[1000000],ans,x;
            unsigned n;
            int main(){
            	cin >> n;
            	for (int i=1; i<=n-1; i++){
            		cin >> x;
            		ans^= x;
            		ans^=i;
            	}
            	ans^=n;
            	cout << ans;
            	return 0;
            }
            
            • -1
              @ 2023-5-6 20:37:39

              煎蛋

              #include<iostream>
              using namespace std;
              int ans,n,x; 
              int main(){
              	cin>>n;
              	for(int i = 1; i < n; i ++ ){
              		cin>>x;
              		ans ^= x;
              		ans ^= i;
              	}
              	ans ^= n;
              	cout<<ans;
              }
              
              • 1

              信息

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