求赞,求赞,求赞
1:直接算
#include<iostream>
using namespace std;
int main(){
long long a,b;
cin>>a>>b;
cout<<a+b;
}
2:用一个变量跑A+B
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a;
scanf("%lld%lld",(&a),(&a+1));
printf("%lld",*(&a)+*(&a+1));
}
3:二分
#include<bits/stdc++.h>
using namespace std;
int a,b;
void ef(int l,int r){
int mid=(l+r)/2;
if(mid==a+b){
cout<<mid;
return;
}
if(mid>a+b){
ef(l,mid);
}
else ef(mid,r);
}
int main(){
cin>>a>>b;
ef(0,10000000000);
}
4:凑数(递归)
#include<bits/stdc++.h>
using namespace std;
long long c[40]={},g=0;
void d(int i,int s){
if(s==0){
return;
}
if(s>=c[i]){
g+=c[i];
d(i-1,s-c[i]);
}
else d(i-1,s);
}
int main(){
c[0]=1;
for(int i=1;i<40;i++)c[i]=c[i-1]*2;
int a,b;
cin>>a>>b;
d(39,a+b);
cout<<g;
}
5:凑数(递推)
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,f[40],g=0;
cin>>a>>b;
c=a+b;
f[0]=1;
for(int i=1;i<31;i++)f[i]=f[i-1]*2;
for(int i=31;i>=0;i--){
if(f[i]<=c){
g+=f[i];
c-=f[i];
}
}
cout<<g;
}
6:暴力
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
cin>>a>>b;
for(int i=0;i<1000000000;i++){
if(i==a+b){
cout<<i;
return 0;
}
}
}
7:高精
#include<bits/stdc++.h>
using namespace std;
int main(){
string a1,b1;
int a[100]={},b[100]={},c[100]={},lena,lenb;
cin>>a1>>b1;
lena=a1.size();
lenb=b1.size();
for(int i=0;i<a1.size();i++)
a[i]=a1[a1.size()-i-1]-'0';
for(int i=0;i<b1.size();i++)
b[i]=b1[b1.size()-i-1]-'0';
int len=0;
while(len<lena||len<lenb){
int k=a[len]+b[len];
c[len]+=k;
if(c[len]>=10){
c[len+1]+=1;
c[len]-=10;
}
len++;
}
if(c[len]==0)len--;
for(int i=len;i>=0;i--){
cout<<c[i];
}
}
8:打表
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
cin>>a>>b;
if(a=="3"&&b=="4")cout<<"7";
if(a=="45"&&b=="55")cout<<"100";
if(a=="123"&&b=="321")cout<<"444";
if(a=="91086199"&&b=="18700332")cout<<"109786531";
if(a=="42267194"&&b=="60645282")cout<<"102912476";
if(a=="69274392"&&b=="10635835")cout<<"79910227";
if(a=="5710219"&&b=="85140568")cout<<"90850787";
if(a=="75601477"&&b=="24005804")cout<<"99607281";
if(a=="70597795"&&b=="90383234")cout<<"160981029";
if(a=="82574652"&&b=="22252146")cout<<"104826798";
}
9:背包(会超内存,以后会改进)
#include<bits/stdc++.h>
using namespace std;
long long f[200000000]={},c[40]={};
int main(){
int a,b;
cin>>a>>b;
c[0]=1;
for(int i=1;i<40;i++)c[i]=c[i-1]*2;
for(int i=0;i<40;i++){
for(int j=c[i];j<200000000;j++){
f[j]=f[j-c[i]]+c[i];
if(f[j]==a+b){
cout<<f[j];
return 0;
}
}
}
}
10:最短路(Floyd)
#include<bits/stdc++.h>
using namespace std;
int f[5][5]={};
int main(){
memset(f,0x3f,sizeof(f));
int a,b;
cin>>a>>b;
f[1][2]=a;f[2][3]=b;
for(int k=1;k<=3;k++){
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
}
}
}
cout<<f[1][3];
}
#额,现在的人怎么都这么无聊
gun
为什么是“第二详细”呢?
# 因为我的是第一详细的
你。。。。。。。。
你。。。你是第四详细好不好
?
我第一,林海威大佬第二,y总第三,sweet第四……所以我数错了,你是第五……
。。。。。。。。
4不叫二分
明白
%%%%
跟没说一样...........
等 于 两 个 变 量
当我没说。。。可以可以
牛
谢谢夸奖