Lowest Common Multiple Plus ——ACM
生活随笔
收集整理的這篇文章主要介紹了
Lowest Common Multiple Plus ——ACM
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. Lowest Common Multiple Plus
求n個數的最小公倍數。Input
輸入包含多個測試實例,每個測試實例的開始是一個正整數n,然后是n個正整數。為每組測試數據輸出它們的最小公倍數,每個測試實例的輸出占一行。你可以假設最后的輸出是一個32位的整數。Sample Input
2 4 6 3 2 5 7Sample Output
12 70該題只要按順序向每兩個求最小公倍數即可,并將所得倍數與下一個數字再進行運算求最小公倍數,循環最終得到所需值。
雖然原題說可以假設最后的輸出是一個32位的整數,但是在中間運算過程中,可能會存在溢出問題,例如a * b可能會溢出,因此可以用a / gcd(a, b) * b來代替a * b / gcd(a, b),或者直接將定義long long a, b避免溢出。
2.漢字統計
統計給定文本文件中漢字的個數。Input
輸入文件首先包含一個整數n,表示測試實例的個數,然后是n段文本。Output
對于每一段文本,輸出其中的漢字的個數,每個測試實例的輸出占一行。 Hint:從漢字機內碼的特點考慮~Sample Input
2 WaHaHa! WaHaHa! 今年過節不說話要說只說普通話waHaHa!WaHaHa! 馬上就要期末考試了Are you ready?Sample Output
14 9本題主要在漢字機內碼的存儲特點,每個漢字站兩個字節,而每個字節最高位為1,因此以十進制表示就是負數,所以只要得到為負值的個數,再除以2就是漢字的個數。(只是linux不能直接調用gets(),無法直接測試…)
#include <stdio.h> #include <string.h> int main (void) {int i, n, len, count;char ch[1000];scanf("%d\n", &n);while(n--){count = 0;gets(ch);len = strlen(ch);for(i = 0; i < len; i++){if(ch[i] < -1){count++;}}printf("%d\n", count / 2);}return 0; }總結
以上是生活随笔為你收集整理的Lowest Common Multiple Plus ——ACM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输卵管堵塞的症状都有哪些
- 下一篇: 文件操作(二) 其他总结