为什么用__int64可以过,改成高精度就错?

只是我写的高精度的程序,本来__int64过了,考虑到考试的时候不能用__int64就写了个高精度的

发现是dp的时候,19大于20

但是单独写测试程序,不会出现这样的问题

求教神牛

#include

using namespace std;

int

n, m, a[21], b[21];

struct

highp

{

int n[31];

highp()

{

memset( n, 0, sizeof n );

n[0] = 1;

}

highp

operator + ( highp h )

{

highp sum;

sum.n[0] = h.n[0] > n[0] ? h.n[0] : n[0];

for( int i = 1; i 0 )

sum.n[0]++;

return sum;

}

highp

operator * ( highp h )

{

highp produ;

produ.n[0] = h.n[0] + n[0];

for( int i = 1; i ( highp h )

{

if( n[0] > h.n[0] )

return true;

else if( n[0] < h.n[0] )

return false;

else

{

for( int i = n[0]; i > 0; i-- )

if( n[i] < h.n[i] )

return false;

return true;

}

}

void

FillMax()

{

n[0] = 30;

}

}ans[21][201], c[21][201];

highp

Tohighp( int x )

{

highp h;

while( x )

{

h.n[h.n[0]++] = x % 10;

x /= 10;

}

while( h.n[h.n[0]] == 0 && h.n[0] > 1 )

h.n[0]--;

return h;

}

ostream&

operator 0; i-- )

out > n >> m;

for( int i = 1; i > a[i] >> b[i];

}

void

__init__()

{

memset( c, 0, sizeof c );

for( int i = 1; i

1 条评论

  • 1

信息

ID
1198
难度
6
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
2862
已通过
844
通过率
29%
被复制
4
上传者