#30610: C++新手寫法


carrotbloxer@gmail.com (一個小蘿蔔)

學校 : 臺北市立大安高級工業職業學校
編號 : 193573
來源 : [150.116.79.18]
最後登入時間 :
2022-11-17 21:51:30
a020. 身分證檢驗 | From: [150.116.79.123] | 發表日期 : 2022-05-31 20:57

超直觀寫法:塞爆for迴圈

int main()
{
    string nums;
    string en_alpha = "ABCDEFGHJKLMNPQRSTUVXYWZIO"; //按數字排序
    string nums_list = "0123456789";
    short sum = 0;
    cin >> nums;
    for (short i = 0; i < 26; i++)
    {
        if (nums[0] == en_alpha[i])
        {
            sum += (i + 10) / 10 + (i + 10) % 10 * 9;
            for (short j = 1; j < 10; j++)
            {
                for (short k = 0; k < 10; k++)
                {
                    if (nums[j] == nums_list[k])
                    {
                        sum += k * (9 - j);
                        if (9 - j == 0)
                            sum += k;
                    }
                }
            }
            if (sum % 10 == 0)
                cout << "real" << endl;
            else
                cout << "fake" << endl;
            break;
        }
    }
    if (sum == 0)
        cout << "fake" << endl;
    return 0;
}
 
ZeroJudge Forum