我要疯了为什么所有WA的点全是too short on line 1啊???
  • 板块P10253 说唱
  • 楼主EumenidesHe
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/3/25 21:19
  • 上次更新2024/3/26 00:14:22
查看原帖
我要疯了为什么所有WA的点全是too short on line 1啊???
1268242
EumenidesHe楼主2024/3/25 21:19

我自己造了好多数据试验了一下都没有问题,0的特判也考虑到了,但是sub1和sub2全WA而且都是too short on line 1,求助!!!

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef struct Bigint
{
	int a[500010];
	int len;
	int& operator[](int i)
	{
		return a[i];
	}
}Bigint;
int T,F;
Bigint t, y, x;
void zhy(Bigint &y, Bigint &x)
{
	int len = y.len;
	int a = y[len], flag = 0;
	while (y[len] >= a && len > 0) {
		flag++;
		len--;
	}
	if (flag == y.len) { 
		if (x[y.len])F = -1;
		x.len = y.len; 
		x[x.len] = a;
	}
	else {
		if (a == 1)
		{
			x.len = y.len - 1;
			x[x.len] = 9;
		}
		else
		{
			x.len = y.len;
			x[x.len] = a-1;
		}
	}
	int b = x[x.len];
	for (int i = 1; i <= x.len; i++)y[i] -= b;
	for (int i = 1; i <= y.len; i++)
	{
		if (y[i] < 0)
		{
			y[i] += 10;
			y[i + 1]--;
		}
		while (y[y.len] == 0)y.len--;
	}
}
int main()
{
	cin >> T;
	getchar();
	for (int i = 0; i < T; i++)
	{
		t.len = 0;
		memset(t.a, 0, sizeof(t.a));
		y.len = 0;
		memset(y.a, 0, sizeof(y.a));
		x.len = 0;
		memset(x.a, 0, sizeof(x.a));
		int len = 1;
		char ch;
		while ((ch=getchar()) != '\n'&&ch!=EOF) {
			t[len] = (int)ch-'0';
			len++;
		}
		len--;
		for (int j = 1,k=len; j <= len; j++,k--)
		{
			y[j] = t[k];
		}
		y.len = len;
		if (len == 1 && y[1] == 0) { cout << 0 << '\n'; return 0; }
		while (y.len > 0)zhy(y, x);
		if (F == -1)
		{
			cout << F<<'\n';
			F = 0;
		}
		else
		{
			if (x[len])x.len = len;
			else x.len = len - 1;
			for (int i = x.len; i > 0; i--)cout << x[i];
			cout << '\n';
		}
	}
}
2024/3/25 21:19
加载中...