jimmyforever @ 2024-07-31 15:36:05
自认为无误的代码爆零 四个测试点全WA 样例自测没有问题 又下载了第一个测试点 2 10011 答案是STEP=4 我的程序跑出来完全一致的结果 不知道为什么WA...
by Otue @ 2024-07-31 15:36:59
@jimmyforever 把代码放出来。
by jimmyforever @ 2024-07-31 15:38:41
@jimmyforever
#include<iostream>
#include<string>
using namespace std;
int A[205],B[205],C[205],D[205];
int main()
{
int N;
string M;
cin>>N;
getline(cin,M);
for(int i=1;i<=M.size()-1;i++)
{
A[i]=M[M.size()-i]-'0';
B[i]=M[i]-'0';
C[i]=A[i]+B[i];
}
int len=M.size();
int j=1;
while(j>=1)
{
if(j>30)
{
cout<<"Impossible!";
break;
}
for(int i=1;i<=len-1;i++)
{
if(C[i]>=N)
{
C[i]=C[i]-N;
C[i+1]++;
}
}
if(C[len]>0)
{
len++;
}
int m=0;
for(int i=1;i<=len-1;i++)
{
if(C[i]==C[len-i])
{
m++;
}
}
if(m==len-1)
{
cout<<"STEP="<<j;
break;
}
else
{
m=0;
}
for(int i=1;i<=len-1;i++)
{
D[i]=C[i];
}
for(int i=1;i<=len-1;i++)
{
A[i]=D[len-i];
B[i]=D[i];
C[i]=A[i]+B[i];
}
j++;
}
return 0;
}
by lianchanghua @ 2024-07-31 15:40:33
@jimmyforever 《运行时错误》 你在 Luogu IDE 试一下
by lianchanghua @ 2024-07-31 15:44:16
@jimmyforever
初步诊断为 getline
的问题,还有一个点 WA,就不知道为什么了
#include<iostream>
#include<string>
using namespace std;
int A[205],B[205],C[205],D[205];
int main()
{
int N;
string M;
cin>>N;
cin>>M;
M=" "+M;
for(int i=1;i<=M.size()-1;i++)
{
A[i]=M[M.size()-i]-'0';
B[i]=M[i]-'0';
C[i]=A[i]+B[i];
}
int len=M.size();
int j=1;
while(j>=1)
{
if(j>30)
{
cout<<"Impossible!";
break;
}
for(int i=1;i<=len-1;i++)
{
if(C[i]>=N)
{
C[i]=C[i]-N;
C[i+1]++;
}
}
if(C[len]>0)
{
len++;
}
int m=0;
for(int i=1;i<=len-1;i++)
{
if(C[i]==C[len-i])
{
m++;
}
}
if(m==len-1)
{
cout<<"STEP="<<j;
break;
}
else
{
m=0;
}
for(int i=1;i<=len-1;i++)
{
D[i]=C[i];
}
for(int i=1;i<=len-1;i++)
{
A[i]=D[len-i];
B[i]=D[i];
C[i]=A[i]+B[i];
}
j++;
}
return 0;
}
by jimmyforever @ 2024-07-31 15:46:39
@lianchanghua 在洛谷IDE上面确实是运行时错误 但用devcpp跑都没问题 实在是想不通
by lianchanghua @ 2024-07-31 15:47:26
@jimmyforever 应该是 windows 系统的问题
by jimmyforever @ 2024-07-31 16:30:07
@lianchanghua 哦是因为16进制的问题 改正后已AC 谢谢! 此贴终结