22-23(1)第5次线上赛

日期格式转换

跳转链接

3962:日期格式转换

要点

  • 字符串的整行输入
    string类型进行带空格的整行输入使用getline(cin,变量名)
  • 多吃一个回车
    因为在使用getline整行输入前还需要输入一个整数n,而n后有回车,所以必须把这个回车给"吃掉"

代码

#include<iostream>
#include<cstdio>

using namespace std;

string mm[]={"","Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sept.","Oct.","Nov.","Dec."};
string sp[3];

void split(string s)
{
	int x=0;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]==' ') x++;
		else if(s[i]==',') continue;
		else p[x]+=s[i];
	}
}

int find_m(string s)
{
	for(int i=1;i<=12;i++)
		if(s==mm[i]) return i;
	return 0;
}
int main()
{
	int n;
	scanf("%d",&n);
	string temp; //吃掉回车
	getline(cin,temp);
	
	while(n--)
	{
		string s;
		getline(cin,s); //整行输入

		split(s);		
		
		if(find_m(sp[0])) cout<<sp[2]<<"."<<find_m(sp[0])<<"."<<sp[1]<<endl;
		else cout<<sp[2]<<"."<<find_m(sp[1])<<"."<<sp[0]<<endl;
		
		for(int i=0;i<3;i++) sp[i]="";
	}
	return 0;
}

方法二

#include<iostream>
#include<cstdio>

using namespace std;

string m[]={"Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sept.","Oct.","Nov.","Dec."};

int main()
{
    int n;
    cin>>n;
    
    while(n--)
    {
        string s1,s2,y;
        cin>>s1>>s2>>y;
        s2.erase(s2.size()-1,1); 
        
        int m1=-1,m2=-1;
        for(int i=0;i<12;i++)
        {
            if(s1==m[i])
            {
                m1=i+1;
                break;
            }
            else if(s2==m[i])
            {
                m2=i+1;
                break;
            }
        }
           
        if(m1==-1)
            cout<<y<<"."<<m2<<"."<<s1<<endl;
        else
            cout<<y<<"."<<m1<<"."<<s2<<endl;       
    }
    return 0;
}

姓名顺序

跳转链接

3958:姓名顺序

要点

  • 增强for循环
    普通for循环for(auto it = v.begin(); it!= v.end(); ++it) 这里的it是指针it->first,auto相当于vector<PSS>::iterator
    增强for循环for(auto it:v) 这里的it是容器中的元素it.first
  • sort函数加<algorithm>头文件
    !!!经常忘记

代码

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

typedef pair<string,string> PSS;
vector<PSS> v;

bool cmp(PSS p1,PSS p2)
{
	string s1=p1.second+" "+p1.first;
	string s2=p2.second+" "+p2.first;
	return s1<s2;
}

int main()
{
	for(int i=0;i<10;i++)
	{
		string s1,s2;
		cin>>s1>>s2;
		v.push_back({s1,s2});
	}
	
	sort(v.begin(),v.end(),cmp);
	
	for(auto it:v)
		cout<<it.first<<" "<<it.second<<endl;
	
	return 0;
}

毕业答辩

跳转链接

3963:毕业答辩

要点

  • 运算符优先级
优先级 分类 运算符
1 逗号运算符 ,
2 赋值运算符 =、+=、-=、*=、/=、 %=、 >=、 <<=、&=、^=、
3 逻辑或 ||
4 逻辑与 &&
5 按位或 |
6 按位异或 ^
7 按位与 &
8 相等、不等 ==、!=
9 关系运算符 <、<=、>、>=
10 位移运算符 <<、>>
11 加法/减法 +、-
12 乘法/除法/取余 *(乘号)、/、%
13 单目运算符 !、*(指针)、& 、++、–、+(正号)、-(负号)
14 后缀运算符 ( )、[ ]、->

代码

#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
	int n;
	scanf("%d",&n);
	
	while(n--)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		
		bool flag2=false;
		if((a+b+c)/3.0>=60) flag2=true; //除号优先级大于加号注意需要加括号
		
		int num_fail=0;
		if(a<60) num_fail++;
		if(b<60) num_fail++;
		if(c<60) num_fail++;

		if(flag2&&num_fail<=1) puts("Yes");
		else puts("No");
	}
	return 0;
 } 

伪素数-2

跳转链接

3959:伪素数-2

要点

  • 踩了一个大大滴坑找了很久很久都没找出来😭😭
    看题!!这个数字本身不是素数,通过排列后是素数那么才是伪素数,如果本来就是素数那么肯定不是伪素数
  • 可以自己递归写全排列,更建议用next_permutation函数
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>

using namespace std;

const int N=10;
char c[N];

bool isprime(int v)
{
    if(v==1) return false;
    
    for(int i=2;i*i<=v;i++)
        if(v%i==0) return false;
        
    return true;
}

int main()
{
    int x;
    cin>>x;
    
    if(isprime(x))
        cout<<"NO";
    else
    {
        string s=to_string(x);
        for(int i=0;i<s.size();i++)
            c[i]=s[i];
        sort(c,c+s.size());
        
        
        do
        {
            int v=0,dex=0;
            while(dex<s.size()&&c[dex]=='0') dex++;
            
            for(;dex<s.size();dex++)
                v=v*10+(int)(c[dex]-'0');
                
            if(isprime(v))
            {
                cout<<"YES";
                return 0;
            }
        }while(next_permutation(c,c+s.size()));
        
        cout<<"NO";
    }
    
    return 0;
}
posted @ 2023-03-17 00:11  咕噜噜冒泡  阅读(22)  评论(0)    收藏  举报