题目描述
给出10个整数,问这些整数%42后有多少个不同的余数。
输入格式
输入包含10个小于1000的非负整数,每行一个。
输出格式
输出它们%42后,有多少个不同的余数。
样例输入
1 2 3 4 5 6 7 8 9 10
样例输出
10
样例输入
42 84 252 420 840 126 42 84 420 126
样例输出
1
样例输入
39 40 41 42 43 44 82 83 84 85
样例输出
6
问题提示
第一个样例的十个结果是1,2,3,4,5,6,7,8,9,10,有10个不同的结果;第二个样例结果都是0,只有一个不同的结果;第三个样例余数是39,40,41,0,1,2,40,41,0,1,有0,1,2,39,40,41这六个不同的结果。
直接上代码
#include<bits/stdc++.h>
using namespace std;
int a[10100],ans=1;
int main()
{ for(int i=1;i<=10;i++){cin>>a[i];a[i]%=42;}sort(a+1,a+11);for(int i=2;i<=10;i++){if(a[i]!=a[i-1]){ans++;}}cout<<ans;return 0;
}
hash代码
#include<bits/stdc++.h>//哈希
using namespace std;
int haxi[45],cnt=0;//mod42最多也就41,多开4位 cnt用来计数
int main()
{ int n=10,x;//定义范围 while(n--){cin>>x;a[x%42]=1;//余数 }for(int i=0;i<=41;i++)//注意范围,余数可为0 {if(a[i]==1){cnt++;}}//遍历 cout<<cnt;return 0;
}