pata1100

1、“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
如:
scanf("%d %*d %d",&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。

%*c作用时读取输入流中数字后的一个字符,并丢弃,使得后面的输入函数不能读到那个字符
2、当输入是13的整数的时候直接输出一个字符串而不是2个,比如26要输出hel而不是hel tret
3、字符串的读入方式要进行区分;
4、substr的应用要牢记,和sort对长度的要求差不多

#include<iostream> 
#include<string>
#include<vector>
#include<map>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;

void num2str(int a,map<int,string> mm){
	if(a<=13||a%13==0){
		cout<<mm[a]<<endl;
	}else{
		cout<<mm[(a/13)*13]<<' '<<mm[a%13]<<endl;
		//cout<<mm[a]<<endl;
	}
}
int str2num(string s,map<string,int> mm){
	return mm[s];
}
int main()
{
	map<string,int> m1;
	m1["tret"]=0;m1["jan"]=1;m1["feb"]=2;m1["mar"]=3;m1["apr"]=4;m1["may"]=5;m1["jun"]=6;m1["jly"]=7;
	m1["aug"]=8;m1["sep"]=9;m1["oct"]=10;m1["nov"]=11;m1["dec"]=12;m1["tam"]=13;m1["hel"]=26;m1["maa"]=39;
	m1["huh"]=52;m1["tou"]=65;m1["kes"]=78;m1["hei"]=91;m1["elo"]=104;m1["syy"]=117;m1["lok"]=130;m1["mer"]=143;
	m1["jou"]=156;
	map<int,string> m2;
	m2[0]="tret";m2[1]="jan";m2[2]="feb";m2[3]="mar";m2[4]="apr";m2[5]="may";m2[6]="jun";m2[7]="jly";
	m2[8]="aug";m2[9]="sep";m2[10]="oct";m2[11]="nov";m2[12]="dec";
	m2[13]="tam";m2[26]="hel";m2[39]="maa";m2[52]="huh";m2[65]="tou";m2[78]="kes";m2[91]="hei";
	m2[104]="elo";m2[117]="syy";m2[130]="lok";m2[143]="mer";m2[156]="jou";
	int n;
	//cin>>n;
	scanf("%d%*c",&n);
	for(int i=0;i<n;i++){
		string s;
		getline(cin,s);
		if(s[0]<='9'&&s[0]>='0'){
			int ans=0;
			for(int j=0;j<s.size();j++){
				//ans+=(s[j]-'0')*((int)pow(10,s.size()-j-1));
				ans=ans*10+(s[j]-'0');
			}
			num2str(ans,m2);
		}else{
			int count=0;
			//cout<<s.size()<<endl;
			if(s.size()>3){
				int k=0;
				int c1=str2num((s.substr(k,k+3)),m1);
				int c2=str2num((s.substr(k+4,k+7)),m1);
				//cout<<c1<<' '<<c2<<' '<<(s.substr(k,k+2))<<' '<<(s.substr(k,k+2))<<endl;
				count=c1+c2;
			}else{
				int k=0;
				int c1=str2num((s.substr(k,k+3)),m1);
				count=c1;
			}
			cout<<count<<endl;
		}
	}
	return 0;
}














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值