ACM-ICPC 2018 徐州賽區網絡預賽 Characters with Hash

這是一道水題,但是覺得其中尋找先導零使用的方法很好用,就決定寫下來.用的是C

題目大意:
輸入T組數據,每組數據輸入一個根字母、一個數字n代表將要輸入的字母的個數、n個連續字母,然後用根字母減去從左往右的每一個字母,得到的結果總共有幾位最後就輸出幾。其中要除去先導零,首個字母減完後只有一位數就算一個,中間的若只有一位就算兩個,若結果全是0,輸出1。

舉例:
12 34 56 輸出:6
00 12 34 輸出:4
01 23 45 輸出:5
12 03 45 輸出:6
00 00 00 輸出:1

完整代碼如下:

#include<stdio.h>
int main() {
    int n ;								//數據組數
    scanf("%d", &n) ;
    for(int i=0; i<n; i++) {
        int len ;						//輸入的字母個數
        int sum = 0 ;					//記錄結果,要賦初值0
        char seed ;						//根字母
        char data[1000005] ;			//存輸入的字母,大小一般比要求超出5比較好
 		scanf("%d %c", &len, &seed) ;	//中間要加空格,不然seed會直接存爲空格然後閃退
        scanf("%s", data) ;
        for(int j=0; j<len; j++) {
            if(seed == data[j] && sum==0)	//字母和根字母相同相減爲0,若sum爲0則此時在數據開頭,相減得到的0爲先導零直接跳過即可
                continue ;
            else if(sum==0 && ((int)seed-data[j])<10) {	//sum爲0則此時在數據開頭,並且相減位數只有一位則只加1
                sum++ ;
                continue ;
            }
            else			//之後的全爲中間數據,不管只有一位還是兩位都加2
                sum += 2 ;
        }
        if(sum == 0)		//循環結束sum還是0則輸出1
            sum++ ;
        printf("%d\n", sum) ;
    }
    return 0 ;
}

發佈了22 篇原創文章 · 獲贊 58 · 訪問量 7288
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章