QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#164893 | #6407. Classical A+B Problem | 3360550356 | WA | 4ms | 4096kb | C++14 | 2.0kb | 2023-09-05 14:28:04 | 2023-09-05 14:28:05 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
const int N=2e4+10;
const int mod=1e9+7;
const int INF=1e9;
string s;
int len;
int a[N],b[N],c[N];
string ansa,ansb;
bool fun2(string str1,string str2){ //s1-s2
for(int i=0;i<N;i++)a[i]=b[i]=c[i]=0;
ansb="";
if ((atoi(str1.c_str()) < atoi(str2.c_str()) && str1.size() == str2.size()) || str1.size() < str2.size()){
return false;
}
for (int i = 0; i < str1.size(); i ++)
a[str1.size()-1-i] = str1[i] - '0';
for (int i = 0; i < str2.size(); i ++)
b[str2.size()-i-1] = str2[i] - '0';
int ans = max(str1.size(), str2.size());
for (int i = 0; i < ans; i ++){
if (a[i] < b[i]){
a[i+1] -= 1; // 向前位借一位
a[i] += 10; // 后一位就得加10
}
c[i] = a[i] - b[i]; // 之后就是正常减法了
// cout<<i<<" "<<a[i]<<" "<<b[i]<<" "<<c[i]<<endl;
// if(i&&c[i]!=c[i-1]&&c[i]){
// return false; //提前中断,前导0不能作为判断条件
// }
}
while (c[ans-1] == 0 && ans > 1)ans -= 1;
if(ans==1&&!c[0])return false;
for (int i = 1; i < ans; i ++){
if(c[i]!=c[i-1]){
return false;
}
}
for (int i = 0; i < ans; i ++){
ansb+=('0'+c[ans-1-i]);
}
return true;
}
bool fun1(int l,int x){ //预处理
ansa="";
ansb="";
string t;
char c='0'+x;
for(int i=0;i<l;i++){
t+=c;
}
ansa=t;
//做一下高精度减法,s-t
int flag=fun2(s,t);
if(!flag)return false;
else {
return true;
}
}
void solve(){
cin>>s;
len=s.length();
//1.枚举a的长度要么一样,要么小1,2.枚举数字1--9
for(int i=len;i>=len-1;i--){
for(int j=9;j>=1;j--){
if(fun1(i,j)){
cout<<ansa<<" "<<ansb<<endl;
return;
}
}
}
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T=1;
cin>>T;
while(T--) {
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 4044kb
input:
6 2 786 1332 89110 2333333 10000000000000000000000000001
output:
1 1 777 9 999 333 88888 222 2222222 111111 9999999999999999999999999999 2
result:
ok ok (6 test cases)
Test #2:
score: -100
Wrong Answer
time: 4ms
memory: 4096kb
input:
100 854 77777777781111111111111111110 44444450 11111111111111333 2310 5 333333333333333333333343332 888999 10 11113333 335 77779 88888888888888888888889111111111111111111110 55555555555555777777 72222222222222222222221 666 5777 1111555555 444444444544444444443 88888888888891111111111110 673332 97 77...
output:
777 77 77777777777777777777777777777 3333333333333333333 44444444 6 11111111111111111 222 2222 88 4 1 333333333333333333333333333 9999 888888 111 9 1 11111111 2222 333 2 77777 2 88888888888888888888888888888888888888888888 222222222222222222222 55555555555555555555 222222 66666666666666666666666 555...
result:
wrong answer x + y != n (test case 35)