黑马程序员技术交流社区
标题:
*题目:求s=a+aa+aaa+aaaa+aa...a的值...。。求别的思路
[打印本页]
作者:
刘安
时间:
2016-8-7 20:19
标题:
*题目:求s=a+aa+aaa+aaaa+aa...a的值...。。求别的思路
package a1到10;
import java.util.Scanner;
public class 超级相加8 {
/**
*题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
*/
public static void main(String[] args) {
int s=0;
//Math.pow(10, 5) 10的五次方
Scanner sc=new Scanner(System.in);
System.out.println("请输入数字0~9用与计算中的a");
int a=sc.nextInt();
System.out.println("请输入要运算多少次");
int time=sc.nextInt();
int sum=0;
if(a>9||a<0||time<1){
System.out.println("输入错误,请重新输入");
}else{
//规律 下面是 输入a 和 time 5
//s= a*10000+a*1000+a*100+a*10+a*1 11111
// +a*1000+a*100+a*10+a*1 1111
// +a*100+a*10+a*1 111
// +a*10+a*1 11
// a*1 1
//规律 总结 可以这么写 s=a*10000*1+a*1000*2+a*100*3+a*10*4+a*1*5
// a*Math.pow(10,time-1)*(i+1)
//a*Math.pow(10,time-i)*(i+1)---i从0开始到time 结束
//设 time=5 a=1
for(int i=0;i<time;i++){
sum+=a*Math.pow(10, time-i-1)*(i+1);
}
System.out.println("最后的值为~~~~"+sum);
}
}
}
作者:
大天
时间:
2016-8-7 20:36
public class Demo08 {
static int a;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个10以内的值:");
a = (int)sc.nextInt();
if(a>=10||a<0) {
return;
}
System.out.println("请输入要求数的个数:");
int number = sc.nextInt();
int allSum = 0;
for(int i = 1;i <= number; i++) {
System.out.print(getSingleNumber(i)+" ");
allSum += getSingleNumber(i);
}
System.out.println(allSum);
}
public static int getSingleNumber(int n) {
if(n==1) {
return a;
}
return getSingleNumber(n-1)*10+a;
}
}
作者:
大天
时间:
2016-8-7 20:39
上面的是用递归做的。有问题可以一起探讨。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2