C++编程习题~
int变量Sn=a+aa+aaa+aaaa+aaaaa+......+aa...a(n个a)之值,a为int,例如:4+44+444+4444+44444(此时n=5),n用cin输入流,不要用getchar(),一定不要用,谢谢诶,头文件,命名空间,循环语句神马的都不用写了,直接写变量定义和赋值的部分,我就是想不出来这个表达式,谢了~
int变量Sn=a+aa+aaa+aaaa+aaaaa+......+aa...a(n个a)之值,a为int,例如:4+44+444+4444+44444(此时n=5),n用cin输入流,不要用getchar(),一定不要用,谢谢诶,头文件,命名空间,循环语句神马的都不用写了,直接写变量定义和赋值的部分,我就是想不出来这个表达式,谢了~
答案:公式 Sn=a*[(10^(n+1)-10-9n)/81
推理过程:
An=aaaa..a=a*10^n+a*10^(n-1)+...+a
Sn =A1+A2+..+An
=a+(a+a*10)+..+(+a+a*10^2+..+a*10^n)
=n*a*10^0+(n-1)*a^10^1+...+a*10^n
10*Sn=n*a*10^1+(n-1)*a^10^2+...+a*10^(n+1)
所以
10*Sn-Sn=[n*a*10^1+(n-1)*a^10^2+...+a*10^(n+1)]-[n*a*10^0+(n-1)*a^10^1+...+a*10^n]
=-n*a*10^0+a*10^1+a*10^2+...+a*10^(n)+a*10^(n+1)
=-n*a+a*(10^(n+1)-10)/(10-1)
=-a*n+a*(10^(n+1)-10)/9
=>Sn=a*[(10^(n+1)-10-9n)/81
如 S1=a*(100-10-9)/81=a
S2=a*(1000-10-18)/81=a*(12)
C++程序如下:
#include <iostream>
#include <CMATH>
using namespace std;
int sn(int a,int n){
return a*(pow(10,n+1)-10-9*n)/81;
}
int main()
{
int n=2;
int a=3;
int s=0;
cout<<"Sn: n=2 : "<<sn(a,2)<<endl;;
for (int i=1;i<10;i++)
{
cout<<"S(n="<<i<<" ) = "<<sn(a,i)<<" \n";
}
return 0;
}
结果
Sn: n=2 : 36
S(n=1 ) = 3
S(n=2 ) = 36
S(n=3 ) = 369
S(n=4 ) = 3702
S(n=5 ) = 37035
S(n=6 ) = 370368
S(n=7 ) = 3703701
S(n=8 ) = 37037034
S(n=9 ) = 370370367
Press any key to continue
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a, b, n, sum = 0, i = 0;
printf("Intput a=");
scanf("%d", &a);
printf("\nInput n=");
scanf("%d", &n);
b = a;
for (i = 1; i <= n; i++)
{
sum += a;
printf("%d", a);
a = a * 10 + b;
if (i != n)
{
printf("+");
}
else
{
printf("=");
}
}
printf("%d", sum);
}cin>>n;
int Sn=0;
for(int j=1;j<=n;j++)
Sn=(Sn+1)*a;
C++的题给你答成这样,我真是服了you,不要告诉我你学过C++,因为你的水平还停留在C语言,虽然C++兼容C,但是要是我改卷,一定给你零分。归纳法:
n=1 => a :
n=2 => a + a*10
n=3 => a + a*10 + a*100
n=4 => a + a*10 + a*100 + a*1000
n=5 => a + a*10 + a*100 + a*1000 + a*10000
|| || || || ||
求和 n*a + (n-1)10a + (n-2)100a + (n-3)1000a + (n-4)*10000a
提a =a(n+10(n-1)+100(n-2)+1000(n-3)+10000(n-4))
=a(n+10n+100n+1000n+10000n + ( 0 + (-1) + (-2) + (-3) + (-4))
=a(等比数列求和 + 等差数列求和)
等比数列求和公式:Sn=(a1-a1*q^n)/(1-q)
等差数列求和公式:Sn=(a1+an)n/2
所以推出:Sn=a((n-n*10^n)/(1-10) + (0+(1-n)*n/2))
希望对你有帮助。。。
int a=4;
int n;
cin>>n;
int sum=a;
for(int i=0;i<n;i++)
{
a=a*10+a;
sum+=a;
}#include <iostream>
using namespace std;
void main()
{
int n,i,j,t,a=3;
cin>>n;
t=1;
for(j=0;j<n;j++)
{
for(i=0;i<t;i++)
cout<<a;
if(j!=n-1)cout<<"+";
t++;
}
}