![](https://i-blog.csdnimg.cn/blog_migrate/1f73c056cb7196a42e672191855766ab.png)
#include <iostream>
using namespace std;
bool judgeprime(int n)//判断是不是素数,素数就是除了1只有本身的数
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0)//如果发现除了1还有其他数整除,那么就不是素数
{
return false;
}
}
return true;
}
int main() {
int n=0;
cin>>n;
int maxl=1,maxr=n;//想要两个数差小那么两个数就靠近中间,n/2
for(int i=2;i<=(n/2);i++)
{
if(judgeprime(i)==true&&judgeprime(n-i)==true)
{
maxl=i;
maxr=n-i;
}
}
cout<<maxl<<endl<<maxr;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/03c8176e822029a748b3016070874213.png)
#include <iostream>
using namespace std;
//递归法判断,n是苹果数,m是盘子数。永远只有两种情况
//1.某个盘子不放
//2.所有盘子都放上苹果
int apple(int n,int m)
{
if(n<0)//如果苹果数《0,那么返回0
{
return 0;
}
else if(n==0||m==1||n==1)//如果苹果数0,或者苹果数1,或者盘子数1,那么只有一种方法,所以返回1.
{
return 1;
}
return apple(n-m,m)+apple(n,m-1);
}
int main() {
int n,m;
cin>>n>>m;
cout<<apple(n,m);
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/9e05dcb6e55a383e39e20b10e5fa2233.png)
#include <iostream>
using namespace std;
#include<bitset>
#include<string>
#include<algorithm>
int judgeone(int n)//判断1的个数函数
{
bitset<32>binary(n);//需要包含头文件bitset,可以将n转化为2进制数,32表示32位的
//cout<<binary<<endl;//测试代码
string s=binary.to_string();//变化为string类型
int number=count(s.begin(),s.end(),'1');//包含头文件algorithm,统计字符串内1的个数
return number;
}
int main() {
int n;
while(cin>>n)
{
cout<<judgeone(n)<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/aa2ea0a478cf51bfbf60e645f869f31b.png)
#include <iostream>
using namespace std;
//寻找字符串函数
string searchCG(string &s,int n)//传入是s的地址和n
{
int count=0;//定义一个,计算字符串内有多少个CG
int maxcount=0;//包含CG最多的计数器
int tip=0;//包含CG最多的字符串的首元素位置
for(int i=0;i<s.size()-n;i++)//因为要往后判断n个,所以减去n,防止溢出
{
count=0;//计数器重置
for(int j=0;j<n;j++)
{
if(s[i+j]=='C'||s[i+j]=='G')
{
count++;//一旦发现CG就把计数器加1
}
}
if(count>maxcount)//如果这个字符串含有的CG比max的都多,那么更新max
{
tip=i;//记录位置
maxcount=count;
}
}
return s.substr(tip,n);//返回从tip开始,n个字符的串
}
int main() {
string s;
cin>>s;
int n;
cin>>n;
cout<<searchCG(s,n);
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/1813cbb154d79bbd6822a179056cc10a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/593817ccdaece5ef225ce43f88570b76.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15b03e4978a0b04a2bd82d626387fcc5.png)
#include <iostream>
#include<string>
#include<deque>
using namespace std;
void showmenu(int n,string &s)//展示菜单和选定歌曲函数
{
deque<int>de;//双端队列存储歌曲1,2,3,4,5,6......
for(int i=0;i<n;i++)
{
de.push_back(i+1);
}
// for(auto i:de)
// {
// cout<<i<<' ';
// }
if(n<4)//如果歌曲数小于4,那么就能全部显示,只需要考虑tip的位置上
{
int tip=0;//tip指的是当前选中的歌曲
for(int i=0;i<s.size();i++)//循环UD的字符串
{
if(s[i]=='U')
{
tip--;//上移
}
else if(s[i]=='D')
{
tip++;//下移
}
}
tip=tip%n;//获取应该是当权歌单的对应位置
if(tip<0)
{
tip=-tip;//如果当前位置是上以后的,那么就变符号(上移循环到当前位置如UUU)
}
for(int i=0;i<de.size();i++)//输出歌单
{
cout<<de[i]<<' ';
}
cout<<endl;
cout<<de[tip];//输出当前位置歌曲
}
else//歌曲数量大于等于4首
{
int mtipu=0;//歌单的第一首歌
int mtipd=3;//歌单的最后一首歌
int tip=0;//选中歌单
for(int i=0;i<s.size();i++)//循环的UD操作
{
if(s[i]=='U')//上移
{
if(tip==0)//如果选中歌单是第一首歌,那么应该把歌单变成列表的最后4首
{
tip=n-1;//选中最后一首歌
mtipu=n-4;//倒数第四
mtipd=n-1;//倒数第一首
}
else if(tip!=0)//不是第一首歌
{
tip--;//选中目标上移
if(tip<mtipu)//如果选中目标上移超过了当前歌单,那么就移动歌单
{
mtipu--;//上移歌单顶部
mtipd--;//上移歌单底部
}
}
}
else if(s[i]=='D')//下移
{
if(tip==n-1)//同上代码,都是同理的,懒得写了,大家凑合看吧
{
tip=0;//变成1
mtipu=0;//变成1
mtipd=3;//变成4
}
else if(tip!=n-1)
{
tip++;
if(tip>mtipd)
{
mtipu++;
mtipd++;
}
}
}
}
for(int i=mtipu;i<=mtipd;i++)//输出歌单
{
cout<<de[i]<<' ';
}
cout<<endl;
cout<<de[tip];
}
}
int main() {
int n;
cin>>n;
string s;
cin>>s;
showmenu(n, s);
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/124bf16fac64fe055bf6d0ba84ec3d75.png)
#include <iostream>
#include<algorithm>//算法头文件
using namespace std;
string findcomstr(string &s1,string &s2)//发现公共子串的函数
{
int mark=-1;//标记公共子串的第一个字符的位置
int max=0;//最大公共子串的长度
int m=s1.size();
int n=s2.size();
if(m<=n)//如果子串1短
{
for(int i=0;i<s1.size();i++)//循环串1
{
for(int j=0;j<s2.size();j++)//循环串2
{
int k=0;//统计公共子串个数
tip:
if(s1[i+k]==s2[j+k])//如果出现公共字符,那么k++(比较完i+k(0)的字符,再比较i+k(1)的字符,这样就能找出子串长度,长度为k)
{
k++;
goto tip;//循环
}
if(k>max)//如果k》max,说明max不是最长子串,更新max,并且更新子串位置
{
max=k;
mark=i;
}
}
}
return s1.substr(mark,max);//返回子串
}
else//如果子串2短
{
for(int i=0;i<n;i++)//和上一端代码相同,大家将就着看,看明白一段代码,就全明白了
{
for(int j=0;j<m;j++)
{
int k=0;
tip2:
if(s2[i+k]==s1[j+k])
{
k++;
goto tip2;
}
if(k>max)
{
max=k;
mark=i;
}
}
}
return s2.substr(mark,max);
}
// return s1.substr(mark,max);
}
int main() {
string s1,s2;
cin>>s1>>s2;
//cout<<s1.size()<<" "<<s2.size()<<endl;//测试
cout<<findcomstr(s1,s2);
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/184ffaf2279487998a64901ea8db7d9b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/39034cda519b073dbee9fe9383f67e39.png)
#include <iostream>
#include<string>
#include<cstring>
#include<sstream>
using namespace std;
string matchcom(string &s)
{
stringstream ss(s);//可以获取以空格为分割的字符串
string t[2]={"",""};//把两个字符串置为空
ss>>t[0];//读取空格前的字符串
ss>>t[1];//读取空格后的字符串
string map0="reset";//特殊情况,这个命令只有一个单词
string map[5][3]={{"reset","board","board fault"},{"board","add","where to add"},
{"board","delete","no board at all"},{"reboot","backplane","impossible"},
{"backplane","abort","install first"}};
//上边是字符串命令的第一个单词,第二个单词,以及对应的命令
if(t[1]=="")//如果输入的单词只有一个,也就是第二个单词是空
{
if(map0.find(t[0])==0)//如果第一个单词能够匹配
{
return "reset what";//返回
}
else
{
return "unknown command";//第一个单词不匹配
}
}
else
{
int count=0;//计算有多少个匹配值,应该只有一个匹配值,否则就是不清楚匹配那个
string str;//保存匹配的字符串
for(int i=0;i<5;i++)//循环命令
{
if(map[i][0].find(t[0])==0&&map[i][1].find(t[1])==0)//如果第一个和第二个单词都匹配
{
count++;//计数器加一
str=map[i][2];//保存这个转化后的命令
}
}
if(count==1)//如果计数器正好是一个,表示正还有一个命令匹配
{
return str;//返回这个转化后的命令
}
else//如果这个计数器不是1,也就是可能没有匹配或者多个匹配
{
return "unknown command";//返回错误命令
}
}
}
int main() {
string s;
while(getline(cin,s))//循环读取一行字符串
{
cout<<matchcom(s)<<endl;//输出判断
}
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/65ffda1c31cf6673ade350212cf8efed.png)
#include <cstdlib>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
double result(double a,double b,char ops)
{
switch(ops)
{
case '+':
return a+b;
case '-':
return a-b;
case '*':
return a*b;
case '/':
return a/b;
}
return 0;
}
bool check(vector<double>&nums)
{
char ops[4]={'+','-','*','/'};
sort(nums.begin(),nums.end());
do
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
double num1=result(nums[0],nums[1],ops[i]);
double num2=result(num1,nums[2],ops[j]);
double num3=result(num2,nums[3],ops[k]);
if(num3==24)
{
return true;
}
}
}
}
}while(next_permutation(nums.begin(), nums.end()));
return false;
}
int main()
{
vector<double>nums(4);
cin>>nums[0]>>nums[1]>>nums[2]>>nums[3];
if(check(nums)==true)
cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/33d6792307038f95e6aa3cf188f22a8f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6585251ec31e0cab538ee1ef7d9a94c0.png)
#include <functional>
#include <iostream>
#include <utility>
using namespace std;
#include<map>
void sortprint(int sortselect,int n)
{
if(sortselect==1)
{
multimap<int ,string>m;//升序插
for(int i=0;i<n;i++)
{
string value;
int key;
cin>>value>>key;
m.insert(make_pair(key,value));
}
for(auto i:m)
{
cout<<i.second<<" "<<i.first<<endl;
}
}
else
{//降序插
multimap<int ,string,greater<int>>m;
for(int i=0;i<n;i++)
{
string value;
int key;
cin>>value>>key;
m.insert(make_pair(key,value));
}
for(auto i:m)
{
cout<<i.second<<" "<<i.first<<endl;
}
}
}
int main() {
int n=0;
cin>>n;
int sortselect=0;
cin>>sortselect;
// multimap<int,string>m;
// for(int i=0;i<n;i++)
// {
// string value;
// int key;
// cin>>value>>key;
// m.insert(make_pair(key,value));
// }
sortprint(sortselect,n);
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/06d58fea85ab1b028ffd92e3e9ebe023.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3dfe88379fb5394f70fc44286c336216.png)
#include <iostream>
#include <locale>
using namespace std;
#include<deque>
int main() {
int x,y,a,b;
cin>>x>>y>>b;
a=y;
deque<deque<int>>d1;
deque<deque<int>>d2;
for(int i=0;i<x;i++)
{
d1.push_back(deque<int>());
for(int j=0;j<y;j++)
{
int t;
cin>>t;
d1[i].push_back(t);
}
}
for(int i=0;i<a;i++)
{
d2.push_back(deque<int>());
for(int j=0;j<b;j++)
{
int t;
cin>>t;
d2[i].push_back(t);
}
}
deque<deque<int>>c(x,deque<int>(b));
int sum=0;
for(int i=0;i<x;i++)
{
for(int j=0;j<b;j++)
{
for(int m=0,n=0;m<y&&n<a;n++,m++)
{
sum=sum+d1[i][m]*d2[n][j];
}
c[i][j]=sum;
sum=0;
}
}
for(int i=0;i<x;i++)
{
for(int j=0;j<b;j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/7ade2091520915d7481d603314f39340.png)
#include <iostream>
using namespace std;
#include<deque>
void print_100()
{
for(int x=0;x<=20;x++)
{
for(int y=0;y<=33;y++)
{
for(int z=0;z<=100;z++)
{
int money=0;
int size=0;
money=5*x+3*y+z;
size=x+y+3*z;
if(money==100&&size==100)
{
cout<<x<<' '<<y<<' '<<3*z<<endl;
}
}
}
}
}
int main() {
int start;
cin>>start;
print_100();
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/c0456b113441bbf14dffd9ef83122190.png)
#include <iostream>
using namespace std;
bool check(int x)
{
if((x%400==0)||(x%4==0&&x%100!=0))
{
return true;
}
return false;
}
int date1[]={31,28,31,30,31,30,31,31,30,31,30,31};
int date2[]={31,29,31,30,31,30,31,31,30,31,30,31};
int main() {
int y,m,d;
cin>>y>>m>>d;
int sum=0;
if(check(y)==true)
{
for(int i=0;i<m-1;i++)
{
sum=sum+date2[i];
}
sum=sum+d;
}
else
{
for(int i=0;i<m-1;i++)
{
sum=sum+date1[i];
}
sum=sum+d;
}
cout<<sum;
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/be422d287c75dfe0940d6fceb9cefd11.png)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
getline(cin,s);
int length=s.length();
int num=0;
for(int i=0;i<length;i++)
{
if(s[i]=='"')
{
i++;
while(s[i]!='"')
{
i++;
}
}
else if(s[i]==' ')
{
num++;
}
}
cout<<num+1<<endl;
for(int i=0;i<length;i++)
{
if(s[i]=='"')
{
i++;
while(s[i]!='"')
{
cout<<s[i];
i++;
}
}
else if(s[i]==' ')
{
cout<<endl;
}
else {
cout<<s[i];
}
}
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/3bc0de27438523f555b8f488e7a6dea0.png)
#include <iostream>
using namespace std;
#include<algorithm>
int main() {
string a,b;
cin>>a>>b;
int max=0;
if(a.length()>b.length())
{
swap(a,b);
}
//cout<<a<<" "<<b;
for(int i=0;i<=a.length()-1;i++)
{
for(int j=i;j<a.length();j++)
{
string com=a.substr(i,j-i+1);
if(b.find(com)==string::npos)
{
continue;
}
else if(b.find(com)!=string::npos)
{
if(com.size()>max)
{
max=com.size();
}
}
}
}
cout<<max;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/048c11937532b18fdca1e7d36c2197b6.png)
#include <iostream>
using namespace std;
#include<string>
int main() {
int n=0;
cin>>n;
int n_3=n*n*n;
for(int i=1;i<n_3-2*n;i=i+2)
{
int sum=0;
for(int j=i;j<i+2*n;j=j+2)
{
sum=sum+j;
}
if(sum==n_3)
{
for(int j=i;j<i+2*(n-1);j=j+2)
{
cout<<j<<'+';
}
cout<<i+2*n-2;
}
}
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/67498188f2f2fd20456744cb91f791ff.png)
#include <iostream>
using namespace std;
#include<deque>
#include<algorithm>
#include<stack>
bool check(deque<int>&nums,deque<int>&kind)
{
stack<int>problem;
int tip=0;
for(int i=0;i<nums.size();i++)
{
problem.push(nums[i]);
while(tip<nums.size()&&problem.size()!=0&&kind[tip]==problem.top())
{
tip++;
problem.pop();
}
}
return problem.empty();
}
int main() {
int n;
cin>>n;
deque<int>nums(n);
for(auto &i:nums)
{
cin>>i;
}
deque<int>kind=nums;
sort(kind.begin(),kind.end());
do
{
if(check(nums,kind)==true)
{
for(int i=0;i<n;i++)
{
cout<<kind[i]<<" ";
}
cout<<endl;
}
}while(next_permutation(kind.begin(), kind.end()));
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/380d50fca040d1e37c652cd87ecef908.png)
#include <iostream>
using namespace std;
#include<map>
#include<set>
int main() {
set<int>s;
int t;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t;
s.insert(t);
}
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t;
s.insert(t);
}
for(auto i:s)
{
cout<<i;
}
return 0;
}
// 64 位输出请用 printf("%lld")
![](https://i-blog.csdnimg.cn/blog_migrate/4d7f57edd8d1cc405b5ff183bae018d0.png)
#include <iostream>
using namespace std;
int main() {
string a,b;
cin>>a>>b;
for(int i=0;i<a.size();i++)
{
if(b.find(a[i])==string::npos)
{
cout<<"false"<<endl;
return 0;
}
}
cout<<"true";
return 0;
}
// 64 位输出请用 printf("%lld")