我试图做这个问题,但我无法得到它接受,它的输入是很大的,所以我想用字符串,但我仍然得到错误的答案。 问题的陈述是在这里 BISHOPSbishops给出错误的答案(spoj)
这里是我的代码:
#include<iostream>
#include<string.h>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
string s;
int z;
cin>>s;
z = s.length();
int i;
vector<int>v;
int arr[z];
for(i=0;i<z;i++)
{
arr[i] = (s[i]-'0');
}
if ((arr[0] == 0 || arr[0] == 1) && z == 1)
{
printf("%d",arr[0]);
}
else
{
int carry = 0;
for(i=z-1;i>=0;i--)
{
int x = (carry + 2*arr[i])%10;
v.push_back(x);
carry = (2*arr[i])/10;
}
if(carry > 0)
{
v.push_back(carry);
}
int t = v.size();
int g=0;
if(v[g] >=2)
{
v[g] = v[g]-2;
}
else
{
v[g] = 8;
g++;
while(v[g] == 0)
{
v[g] = 9;
g++;
}
v[g] = v[g] -1;
}
if(v[t-1] == 0)
{
for(i=t-2;i>=0;i--)
{
printf("%d",v[i]);
}
}
else
{
for(i=t-1;i>=0;i--)
{
printf("%d",v[i]);
}
}
}
return 0;
}
的问题是要找到最大不易受攻击的主教为N×N的国际象棋棋盘的问题,我认为我是正确的做,因为除了1x1的每一个oyher棋盘最大非attacakable主教将是2 * N-2.but仍然SPOJ是给错误的答案
“球体在线裁判 - 需要授权”。你究竟想达到什么目的? – Zeta
你知道吗,你可以很容易地从'istream'(如cin)中提取数字吗?请使用'cin >> y'而不是逐字逐句的方式。您也可以尝试使用回溯方法。 – Zeta
但问题说要采取10^100,我认为我不能采取与cin –