本文主要是介绍【伪语法基础】输入输出练习1~3 找数2~3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【伪语法基础】输入输出练习1
问题描述
给你n个整数,里面有很多重复的数。其中只有一个数出现了奇数次,其他都是偶数次。现在要你找出这个数。
输入格式
第一行一个整数n。
第二行n个整数。
输出格式
一个正整数,出现奇数次的那个数。
样例输入
样例输入1:
5
2 7 4 2 7
样例输入2:
9
7 8 8 7 7 8 2 8 2
样例输出
样例输出1:
4
样例输出2:
7
提示
1<=n<=106,显然n会是个奇数
0<=每个数<=1018
注意内存限制。
思路
x^x=0
so,直接遍历,集中异或,答案即为所求
#include<bits/stdc++.h>
long long n,m,ans=0;
int main(){scanf("%lld",&n);while(n--){scanf("%lld",&m);ans^=m;}printf("%lld",ans);return 0;
}
【伪语法基础】输入输出练习2
问题描述
给你n个整数,里面有很多重复的数。其中只有一个数出现了3k+1次,其他都是3的倍数次。现在要你找出这个数。
输入格式
第一行一个整数n。
第二行n个整数。
输出格式
一个正整数,出现3k+1次的那个数。
样例输入
样例输入1:
7
2 7 4 2 7 2 7
样例输入2:
10
7 8 8 7 7 8 2 8 2 2
样例输出
样例输出1:
4
样例输出2:
8
提示
1<=n<=10^6,显然n是一个3k+1型的数
0<=每个数<=10^18
注意内存限制。
思路
t1存3k+1的数,t2存3k+2的数
#include<bits/stdc++.h>
long long n,x,t1,t2,a1,a2;
int main(){scanf("%lld",&n);while(n--){scanf("%lld",&x);t1=(a1^(a1&x))|
这篇关于【伪语法基础】输入输出练习1~3 找数2~3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!