2350: 彩排(二进制记录个数)
生活随笔
收集整理的這篇文章主要介紹了
2350: 彩排(二进制记录个数)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目鏈接:http://acm.nyist.me/JudgeOnline/problem.php?id=2350
2350: 彩排 時間限制: 1 Sec 內(nèi)存限制: 128 MB 提交: 142 解決: 16 [提交][狀態(tài)][討論版] 題目描述 南陽理工學院,舉辦運動會,有N個人來自不同的學院,在站隊伍的時候每一排需要站K個人,并且這一排的人需要來自同一個學院,但是現(xiàn)在其中有一個學院的人數(shù)不是K的倍數(shù)導致他們不能滿足一排的都是同一個學院的,所以我們想找出他是哪個學院的; 輸入 多組測試數(shù)據(jù);輸入一個n,k;代表有n個人,每一排站k人;接下來輸入n個數(shù)字代表學院編號,a1,a2...an-1,an ai代表我來自的學院,數(shù)字相同表示來自相同的學院。數(shù)字不同代表來自不同的學院。輸出 輸出一個整數(shù),代表人數(shù)不滿足條件的學院編號;樣例輸入 3 2 1 1 3 10 3 3 9 3 1 1 3 1 3 9 9 樣例輸出 3 3 提示0<n,k≤1000000; 0<ai≤1e9; 請注意內(nèi)存限制 (數(shù)據(jù)保證合法)思路:將每個ai轉(zhuǎn)化為二進制數(shù),模m后的二進制就是答案。
#include<stdio.h> #include<string.h>int er[35];int main() {int n;int m;while(~scanf("%d%d",&n,&m)){memset(er,0,sizeof(er));for(int i=0; i<n; i++){int a;scanf("%d",&a);int k=0;while(a)//轉(zhuǎn)化為二進制{if(a&1){er[k]++;er[k]%=m;}k++;a/=2;}}int sum=1;int sun=0;for(int i=0; i<=32; i++)//轉(zhuǎn)化為十進制數(shù)if(er[i])sun=sun|(1<<i);printf("%d\n",sun);}return 0; }總結(jié)
以上是生活随笔為你收集整理的2350: 彩排(二进制记录个数)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS抽奖转盘下篇:转盘主视图的实现(内
- 下一篇: Windows11安装 Python