日期格式转换
跳转链接
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;
}