当前位置:编程学习 > C/C++ >>

C++编程习题~

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++;
 }
}


 

上一个:c++编程问题
下一个:C++编程问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,