**题目:
問題の説明には
?あなたが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の前に取り除くことです。