#6900: 有可能有這種測資-Y100000001


darry140 (丫達)

學校 : 國立科學工業園區實驗高級中學
編號 : 26437
來源 : [18.189.111.47]
最後登入時間 :
2017-10-10 00:35:57
a020. 身分證檢驗 | From: [1.160.172.212] | 發表日期 : 2012-08-12 22:53

如果用公式算起來的話 Y100000001是21 假的

但是我們的前總統老蔣

 他的身分證字號是Y100000001 沒錯

所以如果有這種測資 可是要給他REAL的哈

==========================

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
    char cod[11]={ ' ' };
    while(cin.getline(cod,11))
    {
        int ans=0;
        switch(cod[0])
        {
            case 'A':
            ans+=1;
            break;
            case 'B':
            ans+=10;
            break;
            case 'C':
            ans+=19;
            break;
            case 'D':
            ans+=28;
            break;
            case 'E':
            ans+=37;
            break;
            case 'F':
            ans+=46;
            break;
            case 'G':
            ans+=55;
            break;
            case 'H':
            ans+=64;
            break;
            case 'I':
            ans+=73;
            break;
            case 'J':
            ans+=82;
            break;
            case 'K':
            ans+=91;
            break;
            case 'L':
            ans+=2;
            break;
            case 'M':
            ans+=11;
            break;
            case 'N':
            ans+=20;
            break;
            case 'O':
            ans+=(3+5*9);
            break;
            case 'P':
            ans+=(2+3*9);
            break;
            case 'Q':
            ans+=(2+4*9);
            break;
            case 'R':
            ans+=(2+5*9);
            break;
            case 'S':
            ans+=(2+6*9);
            break;
            case 'T':
            ans+=(2+7*9);
            break;
            case 'U':
            ans+=(2+8*9);
            break;
            case 'V':
            ans+=(2+9*9);
            break;
            case 'W':
            ans+=(3+2*9);
            break;
            case 'X':
            ans+=(3);
            break;
            case 'Y':
            ans+=(3+1*9);
            break;
            case 'Z':
            ans+=(3+3*9);
            break;
           
           
           
           
            }
        ans+=(int)((cod[1]-48))*8;
        ans+=(int)((cod[2]-48))*7;
        ans+=(int)((cod[3]-48))*6;
        ans+=(int)((cod[4]-48))*5;
        ans+=(int)((cod[5]-48))*4;
        ans+=(int)((cod[6]-48))*3;
        ans+=(int)((cod[7]-48))*2;
        ans+=(int)((cod[8]-48))*1;
        ans+=(int)((cod[9]-48));
        if (ans%10==0)
        cout<<"real"<<endl;
        else
        cout<<"fake"<<endl;
       
        }
   
}

 Line19一直錯...為甚麼

 
#10794: Re:有可能有這種測資-Y100000001


jason0109 (jason)

學校 : 不指定學校
編號 : 56987
來源 : [61.62.95.203]
最後登入時間 :
2016-03-19 16:55:28
a020. 身分證檢驗 | From: [61.62.95.203] | 發表日期 : 2016-03-19 16:57

如果用公式算起來的話 Y100000001是21 假的

但是我們的前總統老蔣

 他的身分證字號是Y100000001 沒錯

所以如果有這種測資 可是要給他REAL的哈

==========================

#include
#include
#include
using namespace std;

int main(int argc, char *argv[])
{
    char cod[11]={ ' ' };
    while(cin.getline(cod,11))
    {
        int ans=0;
        switch(cod[0])
        {
            case 'A':
            ans+=1;
            break;
            case 'B':
            ans+=10;
            break;
            case 'C':
            ans+=19;
            break;
            case 'D':
            ans+=28;
            break;
            case 'E':
            ans+=37;
            break;
            case 'F':
            ans+=46;
            break;
            case 'G':
            ans+=55;
            break;
            case 'H':
            ans+=64;
            break;
            case 'I':
            ans+=73;
            break;
            case 'J':
            ans+=82;
            break;
            case 'K':
            ans+=91;
            break;
            case 'L':
            ans+=2;
            break;
            case 'M':
            ans+=11;
            break;
            case 'N':
            ans+=20;
            break;
            case 'O':
            ans+=(3+5*9);
            break;
            case 'P':
            ans+=(2+3*9);
            break;
            case 'Q':
            ans+=(2+4*9);
            break;
            case 'R':
            ans+=(2+5*9);
            break;
            case 'S':
            ans+=(2+6*9);
            break;
            case 'T':
            ans+=(2+7*9);
            break;
            case 'U':
            ans+=(2+8*9);
            break;
            case 'V':
            ans+=(2+9*9);
            break;
            case 'W':
            ans+=(3+2*9);
            break;
            case 'X':
            ans+=(3);
            break;
            case 'Y':
            ans+=(3+1*9);
            break;
            case 'Z':
            ans+=(3+3*9);
            break;
           
           
           
           
            }
        ans+=(int)((cod[1]-48))*8;
        ans+=(int)((cod[2]-48))*7;
        ans+=(int)((cod[3]-48))*6;
        ans+=(int)((cod[4]-48))*5;
        ans+=(int)((cod[5]-48))*4;
        ans+=(int)((cod[6]-48))*3;
        ans+=(int)((cod[7]-48))*2;
        ans+=(int)((cod[8]-48))*1;
        ans+=(int)((cod[9]-48));
        if (ans%10==0)
        cout<<"real"<<endl;
        else
        cout<<"fake"<<endl;
       
        }
   
}

 Line19一直錯...為甚麼


是Y100000001(九碼)不是Y1000000001(十碼)喔

 
#10795: Re:有可能有這種測資-Y100000001


jason0109 (jason)

學校 : 不指定學校
編號 : 56987
來源 : [61.62.95.203]
最後登入時間 :
2016-03-19 16:55:28
a020. 身分證檢驗 | From: [61.62.95.203] | 發表日期 : 2016-03-19 16:57

如果用公式算起來的話 Y100000001是21 假的

但是我們的前總統老蔣

 他的身分證字號是Y100000001 沒錯

所以如果有這種測資 可是要給他REAL的哈

==========================

#include
#include
#include
using namespace std;

int main(int argc, char *argv[])
{
    char cod[11]={ ' ' };
    while(cin.getline(cod,11))
    {
        int ans=0;
        switch(cod[0])
        {
            case 'A':
            ans+=1;
            break;
            case 'B':
            ans+=10;
            break;
            case 'C':
            ans+=19;
            break;
            case 'D':
            ans+=28;
            break;
            case 'E':
            ans+=37;
            break;
            case 'F':
            ans+=46;
            break;
            case 'G':
            ans+=55;
            break;
            case 'H':
            ans+=64;
            break;
            case 'I':
            ans+=73;
            break;
            case 'J':
            ans+=82;
            break;
            case 'K':
            ans+=91;
            break;
            case 'L':
            ans+=2;
            break;
            case 'M':
            ans+=11;
            break;
            case 'N':
            ans+=20;
            break;
            case 'O':
            ans+=(3+5*9);
            break;
            case 'P':
            ans+=(2+3*9);
            break;
            case 'Q':
            ans+=(2+4*9);
            break;
            case 'R':
            ans+=(2+5*9);
            break;
            case 'S':
            ans+=(2+6*9);
            break;
            case 'T':
            ans+=(2+7*9);
            break;
            case 'U':
            ans+=(2+8*9);
            break;
            case 'V':
            ans+=(2+9*9);
            break;
            case 'W':
            ans+=(3+2*9);
            break;
            case 'X':
            ans+=(3);
            break;
            case 'Y':
            ans+=(3+1*9);
            break;
            case 'Z':
            ans+=(3+3*9);
            break;
           
           
           
           
            }
        ans+=(int)((cod[1]-48))*8;
        ans+=(int)((cod[2]-48))*7;
        ans+=(int)((cod[3]-48))*6;
        ans+=(int)((cod[4]-48))*5;
        ans+=(int)((cod[5]-48))*4;
        ans+=(int)((cod[6]-48))*3;
        ans+=(int)((cod[7]-48))*2;
        ans+=(int)((cod[8]-48))*1;
        ans+=(int)((cod[9]-48));
        if (ans%10==0)
        cout<<"real"<<endl;
        else
        cout<<"fake"<<endl;
       
        }
   
}

 Line19一直錯...為甚麼


是Y100000001(九碼)不是Y1000000001(十碼)喔

 
#10796: Re:有可能有這種測資-Y100000001


jason0109 (jason)

學校 : 不指定學校
編號 : 56987
來源 : [61.62.95.203]
最後登入時間 :
2016-03-19 16:55:28
a020. 身分證檢驗 | From: [61.62.95.203] | 發表日期 : 2016-03-19 16:58

如果用公式算起來的話 Y100000001是21 假的

但是我們的前總統老蔣

 他的身分證字號是Y100000001 沒錯

所以如果有這種測資 可是要給他REAL的哈

==========================

#include
#include
#include
using namespace std;

int main(int argc, char *argv[])
{
    char cod[11]={ ' ' };
    while(cin.getline(cod,11))
    {
        int ans=0;
        switch(cod[0])
        {
            case 'A':
            ans+=1;
            break;
            case 'B':
            ans+=10;
            break;
            case 'C':
            ans+=19;
            break;
            case 'D':
            ans+=28;
            break;
            case 'E':
            ans+=37;
            break;
            case 'F':
            ans+=46;
            break;
            case 'G':
            ans+=55;
            break;
            case 'H':
            ans+=64;
            break;
            case 'I':
            ans+=73;
            break;
            case 'J':
            ans+=82;
            break;
            case 'K':
            ans+=91;
            break;
            case 'L':
            ans+=2;
            break;
            case 'M':
            ans+=11;
            break;
            case 'N':
            ans+=20;
            break;
            case 'O':
            ans+=(3+5*9);
            break;
            case 'P':
            ans+=(2+3*9);
            break;
            case 'Q':
            ans+=(2+4*9);
            break;
            case 'R':
            ans+=(2+5*9);
            break;
            case 'S':
            ans+=(2+6*9);
            break;
            case 'T':
            ans+=(2+7*9);
            break;
            case 'U':
            ans+=(2+8*9);
            break;
            case 'V':
            ans+=(2+9*9);
            break;
            case 'W':
            ans+=(3+2*9);
            break;
            case 'X':
            ans+=(3);
            break;
            case 'Y':
            ans+=(3+1*9);
            break;
            case 'Z':
            ans+=(3+3*9);
            break;
           
           
           
           
            }
        ans+=(int)((cod[1]-48))*8;
        ans+=(int)((cod[2]-48))*7;
        ans+=(int)((cod[3]-48))*6;
        ans+=(int)((cod[4]-48))*5;
        ans+=(int)((cod[5]-48))*4;
        ans+=(int)((cod[6]-48))*3;
        ans+=(int)((cod[7]-48))*2;
        ans+=(int)((cod[8]-48))*1;
        ans+=(int)((cod[9]-48));
        if (ans%10==0)
        cout<<"real"<<endl;
        else
        cout<<"fake"<<endl;
       
        }
   
}

 Line19一直錯...為甚麼


是Y100000001(九碼)不是Y1000000001(十碼)喔

 
ZeroJudge Forum