iwtgm-30
A.
解决题所花时间要小于总时间-路程时间
解题所花时间为5n(n+1)/2
void solve() {
int n,k;cin>>n>>k;
for(int i=1;i<=n;i++){
int a=5*i*(i+1);
int b=480-2*k;
if(a>b){
cout<<i-1;return ;
}
}
cout<<n;
}
B.
读错题了
模拟题
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int x,num=0,flag=1;// num 用来记录里程,flag 用来记录是不是不符合题意。
for(int i=1;i<=n;i++){
char a[10];
cin>>x;cin>>a;//这里可以只判断首字母。
if(a[0]=='S'&&num==20000) flag=0;//在南极点且要往南走,排除。
else if(a[0]=='N'&&num==0) flag=0;//在北极点且要往北走,排除
else if((a[0]=='E'||a[0]=='W')&&(num==20000||num==0)) flag=0;//在南极或北极点且要往西或东走,排除
else if(a[0]=='S'&&num+x>20000) flag=0;//向南越过南极点,排除
else if(a[0]=='N'&&num-x<0) flag=0;//向北越过北极点
else if(a[0]=='S') num+=x;//以北极点为0,累计里程
else if(a[0]=='N') num-=x;
}
if(num!=0) flag=0;//判断最终是否是在北极点
if(flag==0) cout<<"NO";
else cout<<"YES";
return 0;
}
D.
假设确定第一天的星期,再给出一个月的天数,是可以确定第二个月的星期
发现所有天数限制下,第二个星期在第一个星期的后0天,后2天或后3天
闰年多一天,那么每一个星期在第一天都有可能
#include<bits/stdc++.h>
using namespace std;
map <string,int> m;//定义map
int main()
{
m["monday"]=1;
m["tuesday"]=2;
m["wednesday"]=3;
m["thursday"]=4;
m["friday"]=5;
m["saturday"]=6;
m["sunday"]=7;//周一到周七字符串转数字
string a,b;
cin>>a>>b;//读入
int x=m[a],y=m[b];//a,b对应的数值
if((y+7-x)%7==0||(y+7-x)%7==2||(y+7-x)%7==3) cout<<"YES";//加7是为了防止负数
else cout<<"NO";//判断,加上7是要实现绝对值,当然用math库里面的abs也行
return 0;
}
G.
还是比较好处理的
代码注释了
#include<bits/stdc++.h>
using namespace std;
char a,b,c,d,m;
int n;
int main(){
cin>>n;//输入12小时制或24小时制
cin>>a>>b>>m>>c>>d;//输入时间
//12小时制或24小时制只影响小时部分,所以分钟部分容易处理
if(c>='6'){//修正分钟部分
c='0';
}
//开始处理小时部分
if(n==12){//12小时制
if(a=='0'&&b=='0'){//12小时中不允许有0时
b='1';
}
else if(10*(a-'0')+(b-'0')>12&&b>'0'){//如果小时部分超过12但b不是0
a='0';
}
else if(10*(a-'0')+(b-'0')>12&&b=='0'){//如果小时部分超过12且b是0
a='1';//改成10点
}
}
if(n==24){//24小时制
if(10*(a-'0')+(b-'0')>=24){//如果小时部分超过24
a='0';
}
}
cout<<a<<b<<m<<c<<d;//输出
}
H.
代码注释了
#include<bits/stdc++.h>
using namespace std;
int a[100001], n, ans;
string s;
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
getchar();//不能省,吸收掉换行
for(int i = 1; i <= n; i++){
getline(cin, s);//getline输入
ans = 0;
int len = s.length();
for(int j = 0; j <= len - 1; j++){
if(s[j]=='a'||s[j]=='e'||s[j]=='i'||s[j]=='o'||s[j]=='u'||s[j]=='y'){
ans++;//是元音个数就加1
}
}
if(ans != a[i]){//有一个不相同就输出 NO
cout << "NO" << endl;
return 0;//拜拜程序
}
}
cout << "YES" << endl;
return 0;
}