YTU oj 3272 公民身份號碼

2021-08-20 15:27:53 字數 1721 閱讀 8697

中華人民共和國居民身份證是國家法定的證明公民個人身份的有效證件。

8位數字出生日期碼,即公民身份號碼的第

7位到第

14位,表示該居民出生的年、月、日,其中年份用

4位數字表示,月和日分別用

2位數字表示,且年、月、日之間不用分隔符。例如:

2023年06

月09日就用20180609

表示。

3位數字順序碼中的最後一位,即公民身份號碼的第

17位,如果是

奇數,表明該居民是男性;如果是偶數,表明該居民是女性。

最後1位數字校驗碼,即公民身份號碼的第

18位,計算方法如下:(1

)將前面的

17位身份證號碼分別乘以不同的係數。從第

1位到第

17位的係數分別為:7、

9、10、

5、8、

4、2、

1、6、

3、7、

9、10、

5、8、

4、2;

(2)將這

17位數字和係數相乘之後的結果相加,再除以11;

(3)餘數只可能是0、

1、2、

3、4、

5、6、

7、8、

9、10這

11個數字之一。其分別對應的最後一位身份證的號碼為1、

0、x、

9、8、

7、6、

5、4、

3、2。

(即餘數0對應

1,餘數1對應

0,餘數2對應

x...)

給出一些不確定是否正確的

18位公民身份號碼,請你計算最後1位數字校驗碼是否正確。如果正確,輸出公民身份號碼對應居民的出生日期和性別;如果不正確,輸出居民正確的公民身份號碼(18位)、出生日期和性別。

第一行輸入測試資料的數目n;

第二行到第

n+1行,每行輸入乙個不確定是否正確的

18位公民身份號碼。

按照題意輸出,個人資訊之間用單個空格分隔開。

2370613199901101327370613199810012450
1999-1-10 female37061319981001245x 1998-10-1 male
#include#include#includeint main()

; char b[19]=;

char c[19];

int d[19];

int n,m,s,i,j,k,l,t;

scanf("%d",&t);

while(t--)

for(i=0;ik=s%11;

if(b[k]==c[17]) //judgement

if(c[10]=='0')

else

if(c[12]=='0')

else

if(d[16]%2==0)

else

}else

printf("%c ",b[k]);

for(i=6;i<=9;i++)

if(c[10]=='0')

else

if(c[12]=='0')

else

if(d[16]%2==0)

else}}

return 0;

}

YTUOJ 眾數問題

給定含有n個元素的多重集合s,每個元素在s中出現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。對於給定的由n 個自然數組成的多重集s,計算s的眾數及其重數。輸入資料的第1行是多重集s中元素個數n n 1300000 接下來的n行中,每行有乙個最多...

Ytu oj 折半查詢

有n個數 n 1000000 這n個數已按從大到小順序存放在乙個陣列中,然後有t次查詢,每次輸入乙個數,要求用折半查詢法找出該數在陣列中第一次出現的位置。如果不在陣列中輸出0。第一行陣列元素的個數n 第二行n個陣列元素的值 第三行輸入查詢次數t t 100000 往下有t行,每行輸入乙個需要查詢的數...

3 27學習內容

資料結構 表 一對一關係 線性表 操作不受限制的表 棧 只能在棧頂進行新增和刪除操作的線性表 操作受限 字串 是乙個操作不受限,型別受限制的線性表 佇列 只能在隊頭刪除,隊尾新增 操作受限 樹 一對多 網 多對多 線性表 特點 分配連續的空間,每個空間大小相同 節省空間,只存資料,不存位址 優點 按...