3674 - 连续和
时间限制 : 1 秒
内存限制 : 128 MB
输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+...+aaa...a(n个a)。 如a为
2、n为8时输出的是2+22+222+...+22222222的和。
题目输入
包含多组测试数据,每组输入数据占一行,分别a和n,中间用空格隔开。
题目输出
输出数列之和S
输入/输出样例
输入格式
2 4
输出格式
2468
C语言解答
#include<stdio.h> int main() { long int a,b[10]; long int sum=0, s=0; int n; while (scanf("%d %d", &a, &n) != EOF) { sum = 0; for (int i = 1; i <= n; i++) { b[0] = 0; s = 0; for (int j = 1; j <= i; j++) { b[j] = a; s=s * 10 ; s = s + b[j]; } sum +=s; } printf("%ld\n", sum); } return 0; }
C++解答
#include <stdio.h> #include <math.h> using namespace std; long long he(long long a,long long n) { long long b=a; long long j=0; for(j=1;j<n;j++) { b=b+a*pow(10,j); } return b; } int main() { long long a,n,i,sum; while(scanf("%lld%lld",&a,&n)!=EOF) { sum=0; for(i=1;i<=n;i++) sum+=he(a,i); printf("%lld\n",sum); } return 0; }
Java解答
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); while(in.hasNext()){ int a=in.nextInt(); int n=in.nextInt(); int sum=0; if(n>0){ sum+=a; if(n>1){ sum+=a*10+a; if(n>2){ sum+=a*100+a*10+a; if(n>3){ sum+=a*1000+a*100+a*10+a; if(n>4){ sum+=a*10000+a*1000+a*100+a*10+a; if(n>5){ sum+=a*100000+a*10000+a*1000+a*100+a*10+a; if(n>6){ sum+=a*1000000+a*100000+a*10000+a*1000+a*100+a*10+a; if(n>7){ sum+=a*10000000+a*1000000+a*100000+a*10000+a*1000+a*100+a*10+a; } } } } } } } } System.out.println(sum); } } }