51Nod 1057 N的阶乘(数论)
2016-02-03 23:40
337 查看
输入N求N的阶乘的准确值。Input
输入N(1 <= N <= 10000)Output
输出N的阶乘Input示例
5Output示例
120
主要思路手算模拟
学习点:printf("%04d",5); 0005
printf("%-4d",5); 5 (后加三个空格)
自己代码:
#include"stdio.h"#include"stdlib.h"#define N 1000000#define mod 10000int A={0};int a_len=0;int main(){ int n; int i,j,k; scanf("%d",&n); A[a_len]=1; for(i=2;i<=n;i++) { long long bin=0; for(k=0;k<=a_len;k++) { int m=A[k]*i+bin; bin=m/mod; A[k]=m%mod; } if(bin) A[++a_len]=bin; } printf("%d",A[a_len]); for(k=a_len-1;k>=0;k--) printf("%04d",A[k]); //注意控制输出格式 printf("\n"); return 0;}大神代码 (效率略高)
#include<stdio.h>int a[9999]={1,0},n,i,c,len,j; int main() { scanf("%d", &n); for ( len=1,j=2;j<=n; ++j) { for (c=0,i=0; i<len;++i) { a[i]= ( c+= a[i]*j ) % 100000; c/=100000; } if((a[i]=c)>0)++len; } printf("%d",a[--len]); for(;len;) printf("%05d", a[--len]); return 0; }大大神代码(效率高很多) 自己体会
#include <iostream>#include <cstdio>#include <algorithm>#include <string>#include <cstring>#include <vector>#include <map>#include<stdio.h>#include<math.h>using namespace std;#define ll long long#define N 1000005#define mod 100000000000000ll ans[10000000];int main(){#ifdef DONOTKNOW freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);#endif ll n; scanf("%I64d",&n); ll i,j; ll l=0; ans[0]=1; for(i=1; i<=n; i+=1) { ll c=0; for(j=0; j<=l; j+=1) { ll t=ans[j]*i+c; ans[j]=t%mod; c=t/mod; } if(c!=0) { ans[++l]=c; } } printf("%I64d",ans[l]); for(i=l-1; i>=0; i-=1) { printf("%0.14I64d",ans[i]); } return 0;}互相学习,共同进步,如果觉得对你有帮助。那么顶一下吧,给我一点鼓励,谢谢
相关文章推荐
- Android权限管理
- DOM的高级操作——表单的添加/删除/获取
- POJ2663 完美覆盖
- ASP.NET MVC 自定义后缀路由设置
- ASP.NET MVC 自定义后缀路由设置
- php session实现多级目录存放实现代码
- JAVA中的Jar
- 数据结构之B树B+树
- ubuntu 开启ip包转发
- Struts2-03-OGNL表达式
- 名词解释之人身险理赔
- hdoj 2061 Treasure the new start, freshmen!
- 一些感想
- Merge Two Linked List
- 自己都找不到自己
- 杭电1017 A Mathematical Curiosity
- Web开发进阶之Servlet理解
- Laravel 5.2 使用illuminate/html 报错的问题
- 欢迎使用Markdown编辑器写博客
- 例题6-2 UVA 514 - Rails (铁轨)