題解報告:hdu 2030 漢字統計
阿新 • • 發佈:2018-04-07
中漢字 nbsp for include put 特點 input rep return
[Hint:]從漢字機內碼的特點考慮~ Sample Input 2 WaHaHa! WaHaHa! 今年過節不說話要說只說普通話WaHaHa! WaHaHa! 馬上就要期末考試了Are you ready? Sample Output 14 9 解題思路:這道題主要考察漢字機內碼 ,了解漢字機內碼的特點之後這題就是水題了。漢字采用的是擴展編碼,一般占用2個字節,且其字節第一位為1(ASCII第一位為0(正數)),即漢字的ASCII為負數,所以統計完負數後取一半輸出即輸出為s/2。計算機中,補碼第一位是符號位,1表示為負數,所以漢字機內碼的每個字節表示的十進制數都是負數,且漢字占用兩個字節結果要除以2。
AC代碼:
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2030
Problem Description 統計給定文本文件中漢字的個數。 Input 輸入文件首先包含一個整數n,表示測試實例的個數,然後是n段文本。 Output 對於每一段文本,輸出其中的漢字的個數,每個測試實例的輸出占一行。[Hint:]從漢字機內碼的特點考慮~ Sample Input 2 WaHaHa! WaHaHa! 今年過節不說話要說只說普通話WaHaHa! WaHaHa! 馬上就要期末考試了Are you ready? Sample Output 14 9 解題思路:這道題主要考察漢字機內碼
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n,s; 6 char c; 7 cin>>n; 8getchar();//吃掉回車符的影響 9 while(n--){ //n個實例 10 s=0; //統計ASCII為負數的漢字 11 while((c=getchar())!=‘\n‘){ //讀入一整行 12 if(c<0)s++; 13 } 14 cout<<s/2<<endl; //占兩個字節,將結果除以2 15 } 16 return 0; 17 }
題解報告:hdu 2030 漢字統計