【acm2629】IDカード

**题目:
問題の説明には
?あなたがIDカードを所有していますあなたはあなたの家族の世帯の登録でIDカードの番号を持っている必要があります。IDカードからは、みんなの特定の個人情報を取得することができます。数は18ビットで、最初の17ビットは、特別な特別な意味が含まれているがあります:最初の6ビットは、あなたから来る地域を表し、そしてあなたのbirthday.What静置次の8ビット、他の4ビットは、あなたが百度やGoogleができ表していますが来ます?それ。
ここであなたがしている地域を表すコードである。
しかし、あなたのカードには、おそらく唯一の33が表示され、0000は他の数字に置き換えられます。
ここでは最初の2つの数字は、彼がZhengjiang省からのものであることを伝えるから?彼がどこにある伝えることができサミュエルのID番号331004198910120036あり、番号19891012は、彼の誕生日の日付(YY / MM / DD)です。

入力
入力は、2つの部分が含まれます:
数をn個の第1行において、nはここにあるn個のテストケースを意味します。テストケースの各々について、IDカード番号の文字列があります。

出力
彼はからのものであり、ときに彼の誕生日であるテーブルの出力に基づいて。あなたがサンプル出力を参照することができます形式。

サンプル入力
1
330000198910120036

サンプル出力
彼/彼女は浙江省からのものであり、彼/彼女の誕生日には、テーブルに基づいて10,12,1989である。
代码:**

#include<iostream>

#include<string>

using namespace std;
string s;
int main(){
	string region,day,month,year;
	int k;
	cin>>k;
	 getline(cin,s);//用于吸收换行 
	while(k--){
		
	    getline(cin,s); 
		string str=s.substr(0,2);
		if(str=="33"){
			region="Zhejiang";
		}else if(str=="11"){
			region="Beijing";
		}else if(str=="71"){
			region="Taiwan";
		}else if(str=="81"){
			region="Hong Kong";
		}else if(str=="82"){
			region="Macao";
		}else if(str=="54"){
			region="Tibet";
		}else if(str=="21"){
			region="Liaoning";
		}else if(str=="31"){
			region="Shanghai";
		}
		year=s.substr(6,4);
		month=s.substr(10,2);
		day=s.substr(12,2);
		cout<<"He/She is from "<<region<<",and his/her birthday is on "<<month<<","<<day<<","<<year<<" based on the table."<<endl;
	}
	return 0;
}

分析:タイトル鍵は、それ以外の場合は結果に影響を与えるバッファに残ります、新しい行の後に入力された文字列を入力kの前に取り除くことです。

公開された42元の記事 ウォン称賛18 ビュー411

おすすめ

転載: blog.csdn.net/weixin_42918559/article/details/104021140