文章目录
一.位运算
1.相同数异或为0
二.排列组合
1.完全排列数
next_permutation();
字符全排:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string s;
cin>>s;
cout<<s<<" ";
while(next_permutation(s.begin(),s.end())){
cout<<s<<" ";
}
return 0;
}
输出:
整数全排:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a[100],n;
cin>>n;
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
}
//cout<<a[0];
while(next_permutation(a,a+n)){
for(int i=0;i<n;++i){
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}
输出:
3.字符串输入(含有空格)
1.getline();
string s;
getline(cin,s);
2.gets();
string s;
gets();
但有的编译器不能用gets();
3.scanf(“%[^\n]”,s);
string s;
scanf("%[^\n]",s);
4.m%x=y%m(x,y为偶数)
1.当x=y时输出x或y
2.当x>y时,输出x+y
3.当x<y时,输出y-y%x/2;
题目链接:
Moderate Modular Mode
5.求最大公约数的函数调用__gcd(a,b);
#include<algorithm>
int main()
{
int G=__gcd(a,b);
cout<<G<<endl;
//ab为同一类型
}
6.浮点数保留小数点
cout<<fixed<<setprecision(2)<<123.456<<endl;//输出123.46;四舍五入
7.结构体重载
struct node
{
ll sum,c,d;
bool operator<(const node &e) const
{
if(sum!=e.sum)return sum<e.sum;当sum不同时,返回sum大的
if(c!=e.c)return c<e.c;
return d<e.d;
}
}s[Max];