7.14-E KAri 409数の関係
409.数の関係
時間制限5000 ms
メモリ制限65536 KB
タイトルの説明
関係"<"と"="で3つの数A、BとCを順番に並べた場合、A=B=C、A=BB<A<C,B<C<A,B=C<A,C<A=B,C<A<B,C<B<A .
数字の個数を入力し、上記の関係の数を指定する必要があります.
数の個数は100以下
入力フォーマット
複数組のデータ、EOF終了
行ごとに1つの入力
出力フォーマット
入力ごとに1行出力します.答えに対応します.
入力サンプル
出力サンプル
時間制限5000 ms
メモリ制限65536 KB
タイトルの説明
関係"<"と"="で3つの数A、BとCを順番に並べた場合、A=B=C、A=B
数字の個数を入力し、上記の関係の数を指定する必要があります.
数の個数は100以下
入力フォーマット
複数組のデータ、EOF終了
行ごとに1つの入力
出力フォーマット
入力ごとに1行出力します.答えに対応します.
入力サンプル
3
出力サンプル
13
dp : a[i][j]=a[i-1][j-1]*(j+1)+a[i-1][j]*(j+1) a[i][j],i ,j
: n=1,2 sum
:#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
struct bign
{
int len,s[500];
bign() // : ,
{
memset(s,0,sizeof(s));
len=1;
}
bign operator =(const bign& m) // =
{
for(int i=0;i<m.len;i++)
{
s[i]=m.s[i];
}
len=m.len;
}
bign operator +(const bign& n) // +
{
bign d;
memset(d.s,0,sizeof(d.s));
d.len=0;
for(int i=0,g=0;g||i<max(len,n.len);i++)
{
int x=g;
if(i<len)
x+=s[i];
if(i<n.len)
x+=n.s[i];
d.s[d.len++]=x%10;
g=x/10;
}
return d;
}
};
bign c;
struct bign sum[200],a[110][110];
int main()
{
int T,j,t,n,m,i,count,q;
for(i=0;i<=100;i++)
for(int k=0;k<=100;k++)
{
memset(a[i][k].s,0,sizeof(a[i][k].s));
a[i][k].len=1;
}
a[2][0].s[0]=1; a[2][1].s[0]=2;//a[i][j],i ,j
sum[1].s[0]=1;
sum[2].s[0]=3;
for(i=3;i<=100;i++)
{
memset(c.s,0,sizeof(c.s));
c.len=1;
memset(sum[i].s,0,sizeof(sum[i].s));
sum[i].len=1;
sum[i].s[0]=1;
a[i][0].s[0]=1;
for(j=1;j<=i-1;j++)
{
//a[i][j]=a[i-1][j-1]*(j+1)+a[i-1][j]*(j+1)
c=a[i-1][j-1]+a[i-1][j];
for(int k=1;k<=j+1;k++)
a[i][j]=a[i][j]+c;
sum[i]=sum[i]+a[i][j];
}
}
while(scanf("%d",&n)!=EOF)
{
for(j=sum[n].len-1;j>=0;j--)
{
printf("%d",sum[n].s[j]);
}
printf("
");
}
return 0;
}