hdu java_hdu 1042 N! (java大数)

import java.util.*;import java.math.*;public class test{public static void main(String[] args){Scanner input=new Scanner(System.in);System.out.println("woqu!");BigInteger a=input.nextBigInteger();

N!Time Limit: 10000/5000 MS (Java/Others)

Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 55306

Accepted Submission(s): 15725Problem DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N! InputOne N in one line, process to the end of file. OutputFor each N, output N! in one line. Sample Input123 Sample Output126第一次用java做题import java.util.*;import java.math.*;public class Main{ public static void main(String args[]) {

Scanner cin = new Scanner(System.in);

int n;

while(cin.hasNextInt())

{

n=cin.nextInt();

System.out.println(f(n));

} } static BigInteger f(int n) {

if(n==0||n==1)

{

return BigInteger.valueOf(1);

}

return f(n-1).multiply(BigInteger.valueOf(n));

}}以上代码已经不能AC,java能搞1000或2000的阶乘,但搞不到10000甚至更大阶乘的位数不会大于本身的4倍c++代码:可以AC#include#include#includeusing namespace std;const int maxn = 100000;struct bign{

int len, s[maxn];

bign()

{

memset(s, 0, sizeof(s));

len = 1;

}

bign(int num)

{

*this = num;

}

bign(const char* num)

{

*this = num;

}

bign operator = (int num)

{

char s[maxn];

sprintf(s, "%d", num);

*this = s;

return *this;

}

bign operator = (const char* num)

{

len = strlen(num);

for(int i = 0; i < len; i++) s[i] = num[len-i-1] - '0';

return *this;

}

string str() const

{

string res = "";

for(int i = 0; i < len; i++) res = (char)(s[i] + '0') + res;

if(res == "") res = "0";

return res;

}

bign operator + (const bign& b) const

{

bign c;

c.len = 0;

for(int i = 0, g = 0; g || i < max(len, b.len); i++)

{

int x = g;

if(i < len) x += s[i];

if(i < b.len) x += b.s[i];

c.s[c.len++] = x % 10;

g = x / 10;

这里写链接内容 这题非常容易超时,以前好多代码都不行了,目测数据改过,自己写了个还算比较巧妙的,后来发现2000多MS,然后rankNO.1的46MS,orz,哪位看官知道代码的请务必告诉我…… #include#define MAX 50000using namespace std;int main(

}

return c;

}

void clean()

{

while(len > 1 && !s[len-1]) len--;

}

bign operator * (const bign& b)

{

bign c;

c.len = len + b.len;

for(int i = 0; i < len; i++)

for(int j = 0; j < b.len; j++)

c.s[i+j] += s[i] * b.s[j];

for(int i = 0; i < c.len-1; i++)

{

c.s[i+1] += c.s[i] / 10;

c.s[i] %= 10;

}

c.clean();

return c;

}

bign operator - (const bign& b)

{

bign c;

c.len = 0;

for(int i = 0, g = 0; i < len; i++)

{

int x = s[i] - g;

if(i < b.len) x -= b.s[i];

if(x >= 0) g = 0;

else

{

g = 1;

x += 10;

}

c.s[c.len++] = x;

}

c.clean();

return c;

}

bool operator < (const bign& b) const

{

if(len != b.len) return len < b.len;

for(int i = len-1; i >= 0; i--)

if(s[i] != b.s[i]) return s[i] < b.s[i];

return false;

}

bool operator > (const bign& b) const

{

return b < *this;

}

bool operator <= (const bign& b)

{

return !(b > *this);

}

bool operator == (const bign& b)

{

return !(b < *this) && !(*this < b);

}

bign operator += (const bign& b)

{

*this = *this + b;

return *this;

}};istream& operator >> (istream &in, bign& x){

string s;

in >> s;

x = s.c_str();

return in;}ostream& operator << (ostream &out, const bign& x){

out << x.str();

return out;}//bign f[10005];int main(){

int n;

while(cin>>n)

{

bign ans=1;

for(int i=1; i<=n; i++)

{

ans=ans*i;

}

cout<

}

return 0;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值