1057 数零壹 (20 分)
生活随笔
收集整理的這篇文章主要介紹了
1057 数零壹 (20 分)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定一串長(zhǎng)度不超過(guò)?10?5???的字符串,本題要求你將其中所有英文字母的序號(hào)(字母 a-z 對(duì)應(yīng)序號(hào) 1-26,不分大小寫)相加,得到整數(shù) N,然后再分析一下 N 的二進(jìn)制表示中有多少 0、多少 1。例如給定字符串?PAT (Basic),其字母序號(hào)之和為:16+1+20+2+1+19+9+3=71,而 71 的二進(jìn)制是 1000111,即有 3 個(gè) 0、4 個(gè) 1。
輸入格式:
輸入在一行中給出長(zhǎng)度不超過(guò)?10?5??、以回車結(jié)束的字符串。
輸出格式:
在一行中先后輸出 0 的個(gè)數(shù)和 1 的個(gè)數(shù),其間以空格分隔。
輸入樣例:
PAT (Basic)輸出樣例:
3 4 #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int maxn = 100010; char str[maxn];int getSum(char s[]){int len = strlen(s);int sum = 0;for(int i = 0; i < len; i++){if(s[i] >= 'a' && s[i] <= 'z') sum += s[i] - 'a' + 1;if(s[i] >= 'A' && s[i] <= 'Z') sum += s[i] - 'A' + 1;}return sum; }void count(int n){int cnt1 = 0,cnt0 = 0;while(n) //如果用do while循環(huán)則會(huì)出現(xiàn)第三個(gè)測(cè)試點(diǎn)不過(guò)。存疑 {if(n%2==0)cnt0++;else cnt1++;n/=2;}printf("%d %d",cnt0,cnt1); }int main(){//fgets(str,maxn,stdin);//getline(cin,str); cin.getline(str,maxn); int sum = getSum(str);count(sum);return 0; } //網(wǎng)上看到的,這個(gè)輸入模式我比較陌生。侵刪 #include<cstdio> int main(){char ch;int sum = 0;while((ch = getchar()) != '\n'){if(ch >= 'a' && ch <= 'z') sum += ch - 'a' + 1;if(ch >= 'A' && ch <= 'Z') sum += ch - 'A' + 1;}int zero = 0,one = 0;while(sum){if(sum % 2 == 0) zero++;else one++;}printf("%d %d",zero,one);return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/wanghao-boke/p/10395224.html
總結(jié)
以上是生活随笔為你收集整理的1057 数零壹 (20 分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1052 卖个萌 (20 分)
- 下一篇: 1058 选择题 (20 分)