QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#374768 | #3716. Simple Arithmetic | ucup-team1251 | WA | 689ms | 9588kb | C++17 | 2.3kb | 2024-04-02 17:57:42 | 2024-04-02 17:57:43 |
Judging History
answer
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<math.h>
#include<set>
#include<unordered_map>
#include<deque>
//#define int long long
//__builtin_popcount();
//next_permutation(start,end)和prev_permutation(start,end)
using namespace std;
typedef pair<int, int>PII;
const int N = 5e5 + 10, M = 5e2 + 10;
int n,m;
int a[N],b[N],c[N],d;
string s;
void init(int a[],string ss)
{
a[0]=ss.length();
for(int i=1;i<=a[0];i++)a[i]=ss[a[0]-i]-'0';
}
void print(int a[])
{
if(a[0]==0)
{
cout<<0<<endl;
return;
}
for(int i=a[0];i>0;i--)cout<<a[i];
cout<<endl;
return;
}
void printy(int a[])
{
int tt=1;
for(int i=1;i<=a[0];i++)
{
a[i]+=tt;
tt=a[i]/10;
a[i]%=10;
}
if(tt!=0)cout<<tt;
for(int i=a[0];i>0;i--)cout<<a[i];
cout<<endl;
return;
}
int compare(int a[],int b[])
{
if(a[0]>b[0])return 1;
if(a[0]<b[0])return -1;
for(int i =a[0];i>0;i--)
{
if(a[i]>b[i])return 1;
else if(a[i]<b[i])return -1;
}
return 0;
}
void jian(int a[],int b[])
{
int flag;
flag=compare(a,b);
if(flag==0)
{
a[0]=0;
return;
}
if(flag==1)
{
for(int i=1;i<=a[0];i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
a[i]-=b[i];
}
while(a[0]>0&&a[a[0]]==0)a[0]--;
return;
}
}
void numcpy(int p[],int q[],int det)
{
for(int i=1;i<=p[0];i++)
{
q[i+det-1]=p[i];
q[0]=p[0]+det-1;
}
}
void chugao(int a[],int b[],int c[])
{
int tmp[N];
c[0]=a[0]-b[0]+1;
for(int i=c[0];i>0;i--)
{
memset(tmp,0,sizeof(tmp));
numcpy(b,tmp,i);
while(compare(a,tmp)>=0)
{
c[i]++;
jian(a,tmp);
}
}
while(c[0]>0&&c[c[0]]==0)c[0]--;//长度
return;
}
void df()
{
while(cin>>s)
{
for(int i=0;i<=500;i++)a[i]=b[i]=c[i]=0;
int l1=s.size();
int flag=0;
if(s[0]=='-')flag++;
if(s[0]=='-')s=s.substr(1,l1-1);
int yy=0;
if(s[0]=='0')yy=1;
init(a,s);
cin>>s;
int l2=s.size();
if(yy==1)
{
cout<<"0"<<endl;
continue;
}
if(s[0]=='-')
{
s=s.substr(1,l2-1);
flag++;
}
init(b,s);
chugao(a,b,c);
// cout<<flag<<endl;
if(a[0]==0)//当前是能整除的
{
if(flag==1)cout<<"-";
print(c);
}
else
{
if(flag==0||flag==2)print(c);
else if(flag==1){//现在应该加上1;
cout<<"-";
printy(c);
}
}
}
}
int main() {
df();
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 689ms
memory: 9588kb
input:
3 2 3 -2 -9223372036854775808 1 -9223372036854775808 -1 9223372036854775807 1 9223372036854775807 -1 -9223372036854775808 2 -9223372036854775808 -2 9223372036854775807 2 9223372036854775807 -2 -2076046199237518199 8895005889588087898 -3939164353449408 -1673591601308294572 236330652387008908 24746725...
output:
1 -2 -9223372036854775808 9223372036854775808 9223372036854775807 -9223372036854775807 -4611686018427387904 4611686018427387904 4611686018427387903 -4611686018427387904 -1 0 -1 -1 2 -2 -1 0 -2 1 0 0 -2 1 0 -37 0 0 3 -1 8 -1 8 -1 -1 -2 0 0 2 8 -1 0 -1 -2 -1 -5 -7 -1 -2 -3 -1 1 0 -11 -1 2 -1 11 8 0 0...
result:
wrong answer 13th words differ - expected: '0', found: '-1'