社区讨论
50 TLE!!!dalao救救蒟蒻吧~~~呜呜呜~~~~
P1009[NOIP 1998 普及组] 阶乘之和参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lte8otvx
- 此快照首次捕获于
- 2024/03/05 18:40 2 年前
- 此快照最后确认于
- 2024/03/05 20:27 2 年前
C
#include <bits/stdc++.h>
using namespace std ;
int n , num ;
string ans ;
string mul( string x , string y )
{
int a[10005] = {} , b[10005] = {} , c[10000005] = {} ;
int k = 1 ;
for( int i = x.size() - 1 ; i >= 0 ; i -- )
{
a[k] = x[i] - '0' ;
k ++ ;
}
k = 1 ;
for( int i = y.size() - 1 ; i >= 0 ; i -- )
{
b[k] = y[i] - '0' ;
k ++ ;
}
for( int i = 1 ; i <= y.size() ; i ++ )
{
for( int j = 1 ; j <= x.size() ; j ++ )
{
c[i + j - 1] += b[i] * a[j] ;
c[i + j] += c[i + j - 1] / 10 ;
c[i + j - 1] %= 10 ;
}
}
string z = "" ;
int len = x.size() + y.size() ;
while( c[len] == 0 && len > 1 ) len -- ;
for( int i = len ; i >= 1 ; i -- )
{
z = z + char( c[i] + '0' ) ;
}
return z ;
}
string fac( int n )
{
string result = "1" ;
for( int i = 1 ; i <= n ; i ++ )
{
string a ;
int temp = i ;
while( temp )
{
a = ( char )( temp % 10 + '0') + a ;
temp /= 10 ;
}
result = mul( result , a ) ;
}
return result ;
}
string add( string x , string y )
{
int a[1005] = {} , b[1005] = {} , c[1005] = {} ;
int k = 1 ;
for( int i = x.size() - 1 ; i >= 0 ; i -- )
{
a[k] = x[i] - '0' ;
k ++ ;
}
k = 1 ;
for( int i = y.size() - 1 ; i >= 0 ; i -- )
{
b[k] = y[i] - '0' ;
k ++ ;
}
int len = max( x.size() , y.size() ) ;
for( int i = 1 ; i <= len ; i ++ )
{
c[i] = a[i] + b[i] + c[i] ;
c[i + 1] = c[i] / 10 ;
c[i] = c[i] % 10 ;
}
string z = "" ;
if( c[len + 1] != 0 ) len ++ ;
for( int i = len ; i >= 1 ; i -- )
{
z = z + char( c[i] + '0' ) ;
}
return z ;
}
int main( void )
{
cin >> num ;
for( int i = 1 ; i <= num ; i ++ )
{
ans = add( ans , fac( i ) ) ;
}
cout << ans ;
return 0 ;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...