java 2的100次方_2 的 100 次方到底有多大?

#include

#include

#include

#include

#include

#include

#include

#include

class Integer

{

public:

Integer()

{

}

Integer(unsigned int value)

{

SetValue(value);

}

~Integer()

{

Clear();

}

void SetValue(unsigned int value)

{

Clear();

unsigned int v;

while (value > 0)

{

v = value % 10000;

m_vecNodes.push_back(v);

value /= 10000;

}

}

void Clear()

{

m_vecNodes.clear();

}

void Multiply(unsigned int v)

{

size_t count = m_vecNodes.size();

for (size_t i = 0; i < count; i++)

{

if (m_vecNodes[i])

{

m_vecNodes[i] *= v;

}

}

for (size_t i = 0; i < count; i++)

{

if (m_vecNodes[i] > 10000)

{

unsigned int k = m_vecNodes[i] / 10000;

m_vecNodes[i] %= 10000;

if (i < count - 1)

{

m_vecNodes[i + 1] += k;

}

else

{

while (k > 0)

{

unsigned int vv = k % 10000;

m_vecNodes.push_back(vv);

k /= 10000;

}

}

}

}

}

void Print() const

{

size_t count = m_vecNodes.size();

if (count == 0)

{

return;

}

if (m_vecNodes[count - 1] > 999)

{

printf("%d ", m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 99)

{

printf(" %d ", m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 9)

{

printf(" %d ", m_vecNodes[count - 1]);

}

else

{

printf(" %d ", m_vecNodes[count - 1]);

}

for (int i = (int)(count - 2); i >= 0; i--)

{

if (m_vecNodes[i] > 999)

{

printf("%d ", m_vecNodes[i]);

}

else if (m_vecNodes[i] > 99)

{

printf("0%d ", m_vecNodes[i]);

}

else if (m_vecNodes[i] > 9)

{

printf("00%d ", m_vecNodes[i]);

}

else

{

printf("000%d ", m_vecNodes[i]);

}

if (i % 10 == 0)

{

printf("\r\n");

}

}

}

bool SaveToFile(const char* szFileName) const

{

size_t count = m_vecNodes.size();

if (count == 0)

{

return false;

}

FILE * fp = ::fopen(szFileName, "wb");

if (!fp)

{

return false;

}

if (m_vecNodes[count - 1] > 999)

{

fprintf(fp, "位数: %d \r\n", (count - 1)*4 + 4);

fprintf(fp, "%d ", m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 99)

{

fprintf(fp, "位数: %d \r\n", (count - 1)*4 + 3);

fprintf(fp, " %d ", m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 9)

{

fprintf(fp, "位数: %d \r\n", (count - 1)*4 + 2);

fprintf(fp, " %d ", m_vecNodes[count - 1]);

}

else

{

fprintf(fp, "位数: %d \r\n", (count - 1)*4 + 1);

fprintf(fp, " %d ", m_vecNodes[count - 1]);

}

unsigned int itor = 1;

for (int i = (int)(count - 2); i >= 0; i--)

{

if (m_vecNodes[i] > 999)

{

fprintf(fp, "%d ", m_vecNodes[i]);

}

else if (m_vecNodes[i] > 99)

{

fprintf(fp, "0%d ", m_vecNodes[i]);

}

else if (m_vecNodes[i] > 9)

{

fprintf(fp, "00%d ", m_vecNodes[i]);

}

else

{

fprintf(fp, "000%d ", m_vecNodes[i]);

}

if ((++itor) % 10 == 0)

{

fprintf(fp, "\r\n");

}

}

::fclose(fp);

ShellExecuteA(NULL, "open", szFileName, NULL, NULL, SW_SHOWNORMAL);

return true;

}

std::vector m_vecNodes;

};

void main()

{

Integer aaaa;

aaaa.m_vecNodes.resize(65536*256);

aaaa.SetValue(31);

for (unsigned int i = 30; i > 1; i--)

{

aaaa.Multiply(i);

}

aaaa.SaveToFile("c:\\31.txt");

aaaa.SetValue(99999);

for (unsigned int i = 99998; i > 1; i--)

{

aaaa.Multiply(i);

if (i % 50 == 0)

{

printf("%d \r\n", i);

}

}

aaaa.SaveToFile("c:\\99999.txt");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值