国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

PAT-B 1016. 部分A+B (15)

2019-11-10 23:05:09
字體:
來源:轉載
供稿:網友

題目鏈接在此。

這個題目在做的過程中發現需要注意的點有:

scanf的輸入控制符(%lld,%d),可參見這篇文章。若一個數由n個x組成,求這個數

以上也是解這道題目的關鍵所在。

剛開始的思路是想: 將輸入的A,B讀入char[]數組中,然后用循環判斷每一位是否等于DA,DB,得到等于DA,DB的個數,然后得出PA,PB,最后求得結果。這種方法也不算復雜。

后來想到,既然又是整數的處理,是否能用除法和取余這兩種運算呢?后來想通了,《算法筆記》上的解法也是如此,代碼如下:

#include<stdio.h>int main(){ long long A,B; int DA,DB; int PA = 0,PB = 0; int JA,JB; int sa = 0, sb = 0; scanf("%lld %d %lld %d",&A,&DA,&B,&DB); //拿到A中DA的個數 while( A != 0 ){ JA = A % 10; if( JA == DA ){ sa ++; } A /= 10; } //拿到B中DB的個數 while( B != 0 ){ JB = B % 10; if(JB == DB){ sb++; } B /= 10; } //求PA if(sa){ PA = DA; for(int i = 1; i < sa; i++){ PA = PA*10 + DA; } } //求PB if(sb){ PB = DB; for(int i = 1; i < sb; i++){ PB = PB*10 + DB; } } 其實代碼可以簡化成如下:

#include<stdio.h>int main(){ long long A,B; int DA,DB; int PA = 0,PB = 0; int JA,JB; int sa = 0, sb = 0; scanf("%lld %d %lld %d",&A,&DA,&B,&DB); //拿到A中DA的個數 while( A != 0 ){ JA = A % 10; if( JA == DA ){ PA = PA*10 + DA; } A /= 10; } //拿到B中DB的個數 while( B != 0 ){ JB = B % 10; if(JB == DB){ PB = PB*10 + DB; } B /= 10; } printf("%d/n",PA+PB); return 0;}

最后,還是提醒自己注意scanf的輸入格式控制?。?!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙山县| 沁阳市| 岚皋县| 阳信县| 墨竹工卡县| 潮州市| 都匀市| 垣曲县| 红原县| 许昌县| 含山县| 东兰县| 阿坝县| 蒙山县| 武夷山市| 南溪县| 林甸县| 乳源| 革吉县| 昌都县| 阿鲁科尔沁旗| 贵溪市| 青神县| 正镶白旗| 壶关县| 保山市| 法库县| 伊春市| 桐庐县| 上栗县| 湖州市| 霍林郭勒市| 青阳县| 镶黄旗| 望江县| 河北区| 新化县| 西贡区| 黄山市| 克东县| 南通市|