這是一道水題,但是覺得其中尋找先導零使用的方法很好用,就決定寫下來.用的是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 ;
}