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;
}
posted @ 2023-11-26 16:55  WW爆米花  阅读(3)  评论(0编辑  收藏  举报