全网最复杂 A+B Problem 题解
2024-08-25 13:22:03
发布于:上海
无大片注释
1.高精加法版
#include<iostream>
#include<sstream>
#include<algorithm>
using namespace std;
typedef long long l;
l a,b;
string high_add(string s1,string s2){
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
string s3="";
bool add01=0;
if(s1.size()>s2.size())swap(s1,s2);
for(int i=0;i<s1.size();i++){
char c=s1[i]+s2[i]-48+add01;
add01=0;
if(c>57)add01=1,c-=10;
s3.append(1,c);
}for(int j=s1.size();j<s2.size();j++){
char c=s2[j]+add01;
add01=0;
if(c>57)add01=1,c-=10;
s3.append(1,c);
}if(add01)s3.append(1,'1');
reverse(s3.begin(),s3.end());
return s3;
}string str(l d){
stringstream ss;
ss<<d;
string s;
ss>>s;
return s;
}string add(l a,l b){
string stra=str(a),strb=str(b);
return high_add(stra,strb);
}void output(string s){
cout<<s;
return;
}void inData(l& a){
cin>>a;
return;
}void input(){
inData(a);
inData(b);
return;
}void doit(){
input();
string s=add(a,b);
output(s);
return;
}int main(){
doit();
return 0;
}
2.手搓废话版
#include<algorithm>
#include<bitset>
#include<cctype>
#include<cmath>
#include<cstdint>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<deque>
#include<fstream>
#include<iostream>
#include<istream>
#include<limits>
#include<list>
#include<math.h>
#include<map>
#include<ostream>
#include<queue>
#include<random>
#include<sstream>
#include<stack>
#include<stdio.h>
#include<string>
#include<time.h>
#include<unordered_map>
#include<unordered_set>
#include<utility>
#include<vector>
using namespace std;
typedef long long l;
l a,b;
string high_add(string s1,string s2){
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
string s3="";
bool add01=0;
if(s1.size()>s2.size()){
string t=s1;
s1=s2;
s2=t;
}
for(int i=0;i<s1.size();i++){
char c=s1[i]+s2[i]-48+add01;
add01=0;
if(c>57){
add01=1;
c-=10;
}
s3.append(1,c);
}
for(int j=s1.size();j<s2.size();j++){
char c=s2[j]+add01;
add01=0;
if(c>57){
add01=1;
c-=10;
}
s3.append(1,c);
}
if(add01)
s3.append(1,'1');
reverse(s3.begin(),s3.end());
return s3;
}
string str(l d){
string s;
if(!d){
s="0";
return s;
}
while(d){
l dig=d%10;
int zero=int('0');
char dc=dig+zero;
s=dc+s;
d/=10;
}
return s;
}
string add(l a,l b){
string stra=str(a);
string strb=str(b);
string res=high_add(stra,strb);
return res;
}
void output(string s,string end=""){
for(int i=0;i<s.size();i++){
char c=s[i];
cout<<c;
cout<<end;
}
return;
}
void inData(l& a){
string s;
cin>>s;
int zero=int('0');
for(int i=0;i<s.size();i++){
l b=a;
b*=10;
char c=s[i];
l d=c-zero;
b+=d;
a^=b;
b^=a;
a^=b;
}
return;
}
void input(){
inData(a);
inData(b);
return;
}
void doit(){
input();
string s;
s=add(a,b);
output(s);
return;
}
int main(){
doit();
return 0;
}
3.肝帝 · 之 · 模拟+精判版
#include<algorithm>
#include<bitset>
#include<cctype>
#include<cmath>
#include<cstdint>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<deque>
#include<fstream>
#include<iostream>
#include<istream>
#include<limits>
#include<list>
#include<math.h>
#include<map>
#include<ostream>
#include<queue>
#include<random>
#include<sstream>
#include<stack>
#include<stdio.h>
#include<string>
#include<time.h>
#include<unordered_map>
#include<unordered_set>
#include<utility>
#include<vector>
using namespace std;
typedef long long l;
l a,b;
map<int,string>mp;
void app(int step,bool ok){
//0
stringstream ss;
ss<<boolalpha<<ok;
string check;
ss>>check;
mp[step]=check;
}
int get_int(int x)
{
//1
if(x>9||x<0)
{
bool ok=false;
app(1,ok);
return -1;
}
else{
char c;
char tmp[10];
for(int i=0;i<10;i++)
{
tmp[i]='0'+i;
}
c=tmp[x];
bool ok=true;
app(1,ok);
return int(c);
}
}
string high_add(string s1,string s2)
{
//2
stack<char>a;
for(int i=0;i<s1.size();i++)
{
a.push(s1[i]);
}
if(s1.size())
{
s1.clear();
}
while(a.size())
{
char t=a.top();
s1=s1+t;
a.pop();
}
for(int i=0;i<s2.size();i++)
{
a.push(s2[i]);
}
if(s2.size())
{
s2.clear();
}
while(a.size())
{
char t=a.top();
s2=s2+t;
a.pop();
}
string s3="";
bool add01=0;
if(s1.size()>s2.size())
{
string t=s1;
s1=s2;
s2=t;
}
for(int i=0;i<s1.size();i++)
{
char c=s1[i]+s2[i]-48+add01;
add01=0;
if(c>57)
{
add01=1;
c-=10;
}
s3.append(1,c);
}
for(int j=s1.size();j<s2.size();j++)
{
char c=s2[j]+add01;
add01=0;
if(c>57)
{
add01=1;
c-=10;
}
s3.append(1,c);
}
if(add01)
{
s3.append(1,'1');
}
for(int i=0;i<s3.size();i++)
{
a.push(s3[i]);
}
if(s3.size())
{
s3.clear();
}
while(a.size())
{
char t=a.top();
s3=s3+t;
a.pop();
}
bool ok=true;
app(2,ok);
return s3;
}
string str(l d)
{
//3
string s;
if(!d)
{
s="0";
return s;
}
while(d)
{
l dig=d%10;
int zero=get_int(0);
char g=dig+zero;
if(isdigit(g))
{
int zero=get_int(0);
char dc=dig+zero;
if(isdigit(dc))
{
s=dc+s;
d/=10;
}
else
{
bool ok=false;
app(3,ok);
return "";
}
}
else
{
bool ok=false;
app(3,ok);
return "";
}
}
bool ok=true;
app(3,ok);
return s;
}
string add(l a,l b)
{
//4
string stra=str(a);
string strb=str(b);
string res=high_add(stra,strb);
bool ok=true;
app(4,ok);
return res;
}
void output(string s,string end="")
{
//5
stack<char>p;
stack<char>q;
for(int i=0;i<s.size();i++)
{
q.push(max(s[i],' '));
if(q.empty())
{
bool ok=false;
app(5,ok);
break;
}
}
while(q.size())
{
while(q.size())
{
char t=q.top();
p.push(t);
q.pop();
}
cout<<p.top()<<end;
p.pop();
while(p.size())
{
char t=p.top();
q.push(t);
p.pop();
}
}
bool ok=true;
app(5,ok);
return;
}
void inData(l& a)
{
//6
string s;
cin>>s;
int zero=get_int(0);
for(int i=0;i<s.size();i++)
{
l b=a;
b*=10;
char c=s[i];
l d=c-zero;
b+=d;
a^=b;
b^=a;
a^=b;
}
bool ok=true;
app(6,ok);
return;
}
void input()
{
//7
inData(a);
inData(b);
bool ok=true;
app(7,ok);
return;
}
void doit(int t)
{
//8
if(t>0)
{
input();
}
string s;
if(t>1)
{
s=add(a,b);
}
if(t>2)
{
output(s);
}
bool ok=true;
app(8,ok);
return;
}
int main()
{
//9
srand(time(0));
int solve=rand()%256+1;
if(solve&&solve<512)
{
bool cando=1;
map<int,string>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
{
if(it->second!="true")
{
cando=0;
break;
}
}
if(cando)
{
int maxint=numeric_limits<int>::min()-1;
int tp=rand()%(maxint-10)+3;
doit(tp);
}
}
return 0;
}
4.C++ · 文件测试版
#include<algorithm>
#include<bitset>
#include<cctype>
#include<cmath>
#include<cstdint>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<deque>
#include<fstream>
#include<iostream>
#include<istream>
#include<limits>
#include<list>
#include<math.h>
#include<map>
#include<ostream>
#include<queue>
#include<random>
#include<sstream>
#include<stack>
#include<stdio.h>
#include<string>
#include<time.h>
#include<unordered_map>
#include<unordered_set>
#include<utility>
#include<vector>
using namespace std;
typedef long long l;
l a,b;
map<int,string>mp;
void app(int step,bool ok){
//0
stringstream ss;
ss<<boolalpha<<ok;
string check;
ss>>check;
mp[step]=check;
}
int get_int(int x)
{
//1
if(x>9||x<0)
{
bool ok=false;
app(1,ok);
return -1;
}
else{
char c;
char tmp[10];
for(int i=0;i<10;i++)
{
tmp[i]='0'+i;
}
c=tmp[x];
bool ok=true;
app(1,ok);
return int(c);
}
}
string high_add(string s1,string s2)
{
//2
stack<char>a;
for(int i=0;i<s1.size();i++)
{
a.push(s1[i]);
}
if(s1.size())
{
s1.clear();
}
while(a.size())
{
char t=a.top();
s1=s1+t;
a.pop();
}
for(int i=0;i<s2.size();i++)
{
a.push(s2[i]);
}
if(s2.size())
{
s2.clear();
}
while(a.size())
{
char t=a.top();
s2=s2+t;
a.pop();
}
string s3="";
bool add01=0;
if(s1.size()>s2.size())
{
string t=s1;
s1=s2;
s2=t;
}
for(int i=0;i<s1.size();i++)
{
char c=s1[i]+s2[i]-48+add01;
add01=0;
if(c>57)
{
add01=1;
c-=10;
}
s3.append(1,c);
}
for(int j=s1.size();j<s2.size();j++)
{
char c=s2[j]+add01;
add01=0;
if(c>57)
{
add01=1;
c-=10;
}
s3.append(1,c);
}
if(add01)
{
s3.append(1,'1');
}
for(int i=0;i<s3.size();i++)
{
a.push(s3[i]);
}
if(s3.size())
{
s3.clear();
}
while(a.size())
{
char t=a.top();
s3=s3+t;
a.pop();
}
bool ok=true;
app(2,ok);
return s3;
}
string str(l d)
{
//3
string s;
if(!d)
{
s="0";
return s;
}
while(d)
{
l dig=d%10;
int zero=get_int(0);
char g=dig+zero;
if(isdigit(g))
{
int zero=get_int(0);
char dc=dig+zero;
if(isdigit(dc))
{
s=dc+s;
d/=10;
}
else
{
bool ok=false;
app(3,ok);
return "";
}
}
else
{
bool ok=false;
app(3,ok);
return "";
}
}
bool ok=true;
app(3,ok);
return s;
}
string add(l a,l b)
{
//4
string stra=str(a);
string strb=str(b);
string res=high_add(stra,strb);
bool ok=true;
app(4,ok);
return res;
}
void output(string s,string end="")
{
//5
stack<char>p;
stack<char>q;
for(int i=0;i<s.size();i++)
{
q.push(max(s[i],' '));
if(q.empty())
{
bool ok=false;
app(5,ok);
break;
}
}
while(q.size())
{
while(q.size())
{
char t=q.top();
p.push(t);
q.pop();
}
cout<<p.top()<<end;
p.pop();
while(p.size())
{
char t=p.top();
q.push(t);
p.pop();
}
}
bool ok=true;
app(5,ok);
return;
}
void inData(l& a)
{
//6
string s;
cin>>s;
int zero=get_int(0);
for(int i=0;i<s.size();i++)
{
l b=a;
b*=10;
char c=s[i];
l d=c-zero;
b+=d;
a^=b;
b^=a;
a^=b;
}
bool ok=true;
app(6,ok);
return;
}
void input()
{
//7
inData(a);
inData(b);
bool ok=true;
app(7,ok);
return;
}
void doit(int t)
{
//8
if(t>0)
{
input();
}
string s;
if(t>1)
{
s=add(a,b);
}
if(t>2)
{
output(s);
}
bool ok=true;
app(8,ok);
return;
}
int main()
{
//9
freopen("A+B.in","r",stdin);
freopen("A+B.out","w",stdout);
srand(time(0));
int solve=rand()%256+1;
if(solve&&solve<512)
{
bool cando=1;
map<int,string>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
{
if(it->second!="true")
{
cando=0;
break;
}
}
if(cando)
{
int maxint=numeric_limits<int>::min()-1;
int tp=rand()%(maxint-10)+3;
doit(tp);
}
}
if(solve)
{
fclose(stdin);
fclose(stdout);
}
return 0;
}
5.Python废话版
def add(a,b):
return a+b
def show(s):
s=str(s)
for i in s:
print(i,end="")
def split_str(string):
lst=[]
tmp=""
for i in string:
if i == " ":
lst.append(tmp)
tmp=""
else:
tmp+=i
if len(tmp)>0:
lst.append(tmp)
return lst
def inData():
return input()
def get_item(lst,id):
return lst[id]
def get_integer(string):
return int(string)
list1=split_str(inData())
show(add(get_integer(get_item(list1,0)),get_integer(get_item(list1,1))))
全部评论 4
#include <iostream> #include <cstdlib> #include <ctime> #include <string> #include <vector> #include <algorithm> #include <functional> using namespace std; class ComplexNumber { public: int value; ComplexNumber(int v) : value(v) {} }; int generateRandomNumber(int min, int max) { static bool initialized = false; if (!initialized) { srand(time(nullptr)); initialized = true; } return min + rand() % (max - min + 1); } bool isValidInput(const string& input) { return all_of(input.begin(), input.end(), ::isdigit); } int stringToInt(const string& str) { int result = 0; for (char ch : str) { result = result * 10 + (ch - '0'); } return result; } int complexAddition(const ComplexNumber& a, const ComplexNumber& b) { int result = 0; for (int i = 0; i < a.value; ++i) { result += 1; } for (int i = 0; i < b.value; ++i) { result += 1; } return result; } void outputResult(int result) { vector<int> digits; while (result > 0) { digits.push_back(result % 10); result /= 10; } reverse(digits.begin(), digits.end()); for (int digit : digits) { cout << digit; } cout << endl; } int main() { string inputA, inputB; int A, B; cin >> inputA; cin >> inputB; if (!isValidInput(inputA) || !isValidInput(inputB)) { cout << "Invalid input!" << endl; return 1; } A = stringToInt(inputA); B = stringToInt(inputB); ComplexNumber complexA(A); ComplexNumber complexB(B); int result = complexAddition(complexA, complexB); outputResult(result); return 0; }
2024-08-22 来自 广东
2我都说变量名很有用吧,可以凑长度(
2024-08-23 来自 广东
0可以
2024-08-23 来自 广东
0
不如火车头+深搜(
2024-08-23 来自 广东
16
2024-08-23 来自 上海
0
加上这个:快读快写终极版(写在main函数前面)
namespace FastIO { const int SZ = 1 << 20; char inbuf[SZ], outbuf[SZ]; int in_left = 0, in_right = 0; int out_right = 0; inline void load() { int len = fread(inbuf, 1, SZ, stdin); in_left = 0; in_right = len; } inline char getchar() { if (in_left >= in_right) load(); if (in_left >= in_right) return EOF; return inbuf[in_left++]; } inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = x * 10 + (ch - '0'); ch = getchar(); } return x * f; } inline void flush() { fwrite(outbuf, 1, out_right, stdout); out_right = 0; } inline void putchar(char ch) { outbuf[out_right++] = ch; if (out_right == SZ) flush(); } inline void write(int x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9) write(x / 10); putchar(x % 10 + '0'); } struct Flusher { ~Flusher() { flush(); } } flusher; } using FastIO::read; using FastIO::write; using FastIO::putchar;
1周前 来自 上海
0加上快读
2024-08-22 来自 广东
0
有帮助,赞一个