首页 > ACM题库 > HDU-杭电 > hdu 2629 Identity Card-字符串-[解题报告]C++
2014
02-12

hdu 2629 Identity Card-字符串-[解题报告]C++

Identity Card

问题描述 :

Do you own an ID card?You must have a identity card number in your family’s Household Register. From the ID card you can get specific personal information of everyone. The number has 18 bits,the first 17 bits contain special specially meanings:the first 6 bits represent the region you come from,then comes the next 8 bits which stand for your birthday.What do other 4 bits represent?You can Baidu or Google it.
Here is the codes which represent the region you are in.

However,in your card,maybe only 33 appears,0000 is replaced by other numbers.
Here is Samuel’s ID number 331004198910120036 can you tell where he is from?The first 2 numbers tell that he is from Zhengjiang Province,number 19891012 is his birthday date (yy/mm/dd).

输入:

Input will contain 2 parts:
A number n in the first line,n here means there is n test cases. For each of the test cases,there is a string of the ID card number.

输出:

Input will contain 2 parts:
A number n in the first line,n here means there is n test cases. For each of the test cases,there is a string of the ID card number.

样例输入:

1
330000198910120036

样例输出:

He/She is from Zhejiang,and his/her birthday is on 10,12,1989 based on the table.

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    char a[18];
    memset(a,0,sizeof(a));
    while(n--)
    {
        cin>>a;
        if(a[0]=='3' && a[1]=='3')
            cout<<"He/She is from Zhejiang,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='1' && a[1]=='1')
            cout<<"He/She is from Beijing,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='7' && a[1]=='1')
            cout<<"He/She is from Taiwan,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='8' && a[1]=='1')
            cout<<"He/She is from Hong Kong,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='8' && a[1]=='2')
            cout<<"He/She is from Macao,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='5' && a[1]=='4')
            cout<<"He/She is from Tibet,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='2' && a[1]=='1')
            cout<<"He/She is from Liaoning,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        if(a[0]=='3' && a[1]=='1')
            cout<<"He/She is from Shanghai,and his/her birthday is on "
            <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<
            a[9]<<" "<<"based on the table.";
        cout<<endl;
    }
    return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n,t;
    string home,a;
    cin>>n;
    for(int k = 0 ; k < n ; k++)
    {
        cin>>a;
        t = (a[0]-'0')*10+a[1]-'0';
        switch(t)
        {
            case 11:home = "Beijing";break;
            case 31:home = "Shanghai";break;
            case 21:home = "Liaoning";break;
            case 33:home = "Zhejiang";break;
            case 54:home = "Tibet";break;
            case 71:home = "Taiwan";break;
            case 81:home = "Hong Kong";break;
            case 82:home = "Macao";break;
            default :break;
        }
        cout<<"He/She is from "<<home<<",and his/her birthday is on "
        <<a[10]<<a[11]<<","<<a[12]<<a[13]<<","<<a[6]<<a[7]<<a[8]<<a[9]
        <<" based on the table."<<endl;
    }
    return 0;
}

解题转自:http://www.cnblogs.com/LOB104-zhanglei/articles/3188967.html


  1. #!/usr/bin/env python
    def cou(n):
    arr =
    i = 1
    while(i<n):
    arr.append(arr[i-1]+selfcount(i))
    i+=1
    return arr[n-1]

    def selfcount(n):
    count = 0
    while(n):
    if n%10 == 1:
    count += 1
    n /= 10
    return count

  2. 其实国内大部分公司对算法都不够重视。特别是中小型公司老板根本都不懂技术,也不懂什么是算法,从而也不要求程序员懂什么算法,做程序从来不考虑性能问题,只要页面能显示出来就是好程序,这是国内的现状,很无奈。