时间:1s 空间:256M
题目描述:
输出(a+b)^n的展开式
输入格式:
输入一行,包含一个整数n
输出格式:
见样例输出,注意空格的使用
样例输入1:
2
样例输出1:
(a+b)^2 = a^2 + 2*a*b + b^2
样例输入2:
3
样例输出2:
(a+b)^3 = a^3 + 3*a^2*b + 3*a*b^2 + b^3
约定:
0<=n<=30
提示:
此题显然要用到二项式定理,需要一点数学基础。说得通俗一点,就是杨辉三角(当然还有其他解法)。具体的每一项的系数可以递推出来。当n=x时,系数从左往右刚好是杨辉三角的x+1行。当然,这道题还要特判,就是n=0的时候,很容易漏掉。
代码:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#define N 40
int a [ N ] [ N ] , n ;
using namespace std ;
int main ( )
{
scanf ( "%d" , & n ) ;
memset ( a , 0 , sizeof ( a ) ) ;
a [ 1 ] [ 1 ] = 1 ;
for ( int i = 2 ; i <= n + 1 ; i ++ )
for ( int j = 1 ; j <= i ; j ++ )
a [ i ] [ j ] = a [ i - 1 ] [ j ] + a [ i - 1 ] [ j - 1 ] ;
printf ( "(a+b)^%d = " , n ) ;
if ( n == 0 ) printf ( "1" ) ;
else for ( int i = 1 ; i <= n + 1 ; i ++ )
{
if ( a [ n + 1 ] [ i ] != 1 ) printf ( "%d*" , a [ n + 1 ] [ i ] ) ;
if ( i != n + 1 ) printf ( "a" ) ;
if ( i < n ) printf ( "^%d" , n - i + 1 ) ;
if ( i != 1 && i != n + 1 ) printf ( "*" ) ;
if ( i != 1 ) printf ( "b" ) ;
if ( i > 2 ) printf ( "^%d" , i - 1 ) ;
printf ( " " ) ;
if ( i != n + 1 ) printf ( "+" ) ;
printf ( " " ) ;
}
return 0 ;
}
当然,上面的代码还可以升级,节省一点空间,将二维数组改一位数组。虽然这么改意义不大,都能过,但毕竟是一种思想。
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#define N 40
int a [ N ] , n ;
using namespace std ;
int main ( )
{
scanf ( "%d" , & n ) ;
memset ( a , 0 , sizeof ( a ) ) ;
a [ 1 ] = 1 ;
for ( int i = 2 ; i <= n + 1 ; i ++ )
for ( int j = i ; j >= 1 ; j -- )
a [ j ] = a [ j ] + a [ j - 1 ] ;
printf ( "(a+b)^%d = " , n ) ;
if ( n == 0 ) printf ( "1" ) ;
else for ( int i = 1 ; i <= n + 1 ; i ++ )
{
if ( a [ i ] != 1 ) printf ( "%d*" , a [ i ] ) ;
if ( i != n + 1 ) printf ( "a" ) ;
if ( i < n ) printf ( "^%d" , n - i + 1 ) ;
if ( i != 1 && i != n + 1 ) printf ( "*" ) ;
if ( i != 1 ) printf ( "b" ) ;
if ( i > 2 ) printf ( "^%d" , i - 1 ) ;
printf ( " " ) ;
if ( i != n + 1 ) printf ( "+" ) ;
printf ( " " ) ; //行末空格没关系的
}
return 0 ;
}
相关链接:
XJOI 题解小全:
https://blog.csdn.net/zj_mrz/article/details/80949787
XJOI 3265 Climb the stairs 爬楼梯 题解:
https://blog.csdn.net/zj_mrz/article/details/80970052