Loading [MathJax]/extensions/TeX/AMSsymbols.js

2015年10月28日 星期三

Uva 623 500!

#uva 623 #500!

題目來源:https://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCMQFjABahUKEwj8_sWTt-XIAhXGGJQKHfQQBaY&url=https%3A%2F%2Fuva.onlinejudge.org%2Findex.php%3Foption%3Donlinejudge%26page%3Dshow_problem%26problem%3D564&usg=AFQjCNFKlOvVQ16qrVLkY6rPajXogo_Ydw&sig2=9n3XYj69Yzfy7Ilyi0noXQ

題意:1~1000!

程式碼:


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<sstream>
#include<fstream>
#include<cmath>
using namespace std;
typedef long long int L_int;
int p1[2001][1200],carry[1200];
int main(){
int tag1,n;
memset(p1,0,sizeof(p1));
memset(carry,0,sizeof(carry));
tag1 = 1;
p1[1][0] = 1;
p1[0][0] = 1;
p1[0][1199] = 1;
for(int i=1;i<=1000;i++){
int j;
for(j=0;j<tag1;j++){
p1[i][j]=p1[i][j]*i;
p1[i][j]+=carry[j];
carry[j+1] = p1[i][j]/1000;
p1[i][j]%=1000;
}
p1[i][j]=carry[j];
if(carry[tag1]) tag1++;
p1[i][1199] = tag1;
//memcpy(p1[i+1],p1[i],sizeof(p1[i]));
for(int ll=0;ll<tag1;ll++)
p1[i+1][ll] = p1[i][ll];
memset(carry,0,sizeof(carry));
}
while(~scanf("%d",&n)){
printf("%d!\n%d",n,p1[n][p1[n][1199]-1]);
for(int i = p1[n][1199]-2;i>=0;i--){
for(int h = 0;h<2-(int)log10(p1[n][i]);h++)
printf("0");
if(!p1[n][i]) cout<<"00";
cout<<p1[n][i];
}
cout<<"\n";
}
}
view raw uva623.cpp hosted with ❤ by GitHub



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。