冬天到了,n只松鼠决定一起采集一波坚果过冬,可是在松鼠老大清点的时候,发现少了一些食物,于是召开松鼠大会,知道是有一只小松鼠偷吃了一部分食物!可是他们只知道每一个松鼠运了m个,但是某一个只松鼠运了k个,请找出这个松鼠!(本题时限3s 限制内存2M)
冬天到了,n只松鼠决定一起采集一波坚果过冬,可是在松鼠老大清点的时候,发现少了一些食物,于是召开松鼠大会,知道是有一只小松鼠偷吃了一部分食物!可是他们只知道每一个松鼠运了m个,但是某一个只松鼠运了k个,请找出这个松鼠!(本题时限3s 限制内存2M)
输入有多组数据,每组第一行包含三个数n,m,k(n<=100000,1<m<=9,k<m)。
然后输入m*(n-1)+k个数,第i个数表示运送第i个坚果的松鼠编号,编号范围在2^30以内
输出这个松鼠的编号
#include<stdio.h> #include<string.h> #include<algorithm> #define ll long long using namespace std; int a[55]; int main() { int n,m,k; int i,j; ll x; while(scanf("%d%d%d",&n,&m,&k)!=EOF) { memset(a,0,sizeof(a)); for(i=0;i<m*(n-1)+k;i++) { scanf("%lld",&x); for(j=0;j<31;j++) { a[j]+=x%2; x/=2; } } ll ans=0; for(i=0;i<31;i++) { if(a[i]%m!=0) ans+=1<<i; } printf("%lld\n",ans); } return 0; }
#include<stdio.h> #include<string.h> #include<algorithm> #define N 1000010 using namespace std; char c[11]; struct zz { char s[15]; bool friend operator<(zz a,zz b) { return strcmp(a.s,b.s)>0; } }q[N]; int main() { int n,m,k; int i,j,l; while(scanf("%d%d%d",&n,&m,&k)!=EOF) { getchar(); memset(c,'\0',sizeof(c)); l=m*(n-1)+k; for(i=0;i<l;i++) scanf("%s",q[i].s); sort(q,q+l); int flag=0; int cnt=1; for(i=0;i<l-1;i++) { if(strcmp(q[i].s,q[i+1].s)==0) cnt++; else { if(cnt==m) cnt=1; else { flag=1; strcpy(c,q[i].s); break; } } if(flag) break; } printf("%s\n",c); } return 0; }
#include<stdio.h> #include<string.h> #include<algorithm> #define ll long long #define N 151000 using namespace std; struct zz { ll s; bool friend operator<(zz a,zz b) { return a.s>b.s; } }q[N]; int main() { int n,m,k; int i,j,l; while(scanf("%d%d%d",&n,&m,&k)!=EOF) { l=m*(n-1)+k; for(i=0;i<l;i++) scanf("%lld",&q[i].s); sort(q,q+l); int flag=0; int cnt=1; ll kk; for(i=0;i<l-1;i++) { if(q[i].s==q[i+1].s) cnt++; else { if(cnt==m) cnt=1; else { flag=1; kk=q[i].s; break; } } if(flag) break; } printf("%lld\n",kk); } return 0; }