厦门大学线下编程比赛第一题:求和
发布时间:2020-12-14 02:23:55 所属栏目:大数据 来源:网络整理
导读:题目详情 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和。 输入描述: 测试数据有多组,以文件结尾。每行输入a,n(1=a,n=1000000)。 输出描述: 由于结果可能比较大,所以请输出答案mod 1000000007。 答题说明 输入样例: 1 10 输出样例: 234567893
题目详情
给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和。 输入描述: 测试数据有多组,以文件结尾。每行输入a,n(1<=a,n<=1000000)。 输出描述: 由于结果可能比较大,所以请输出答案mod 1000000007。
答题说明
输入样例: 1 10 输出样例: 234567893 分析: 思想:用空间换时间。 代码:
import java.util.Scanner; public class Main { final static int mod = 1000000007; public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(scan.hasNext()) { int a = scan.nextInt(); int n = scan.nextInt(); int m = Main.get_m(a); long[] arr1 = new long[n]; long[] arr2 = new long[n]; arr1[0] = 1; for (int i = 1; i < arr1.length; i++) { arr1[i] = arr1[i-1] * m % mod; } for (int i = 0; i < arr2.length; i++) { arr2[i] = (n-i) * arr1[i] % mod; } long sum = 0; for (int i = 0; i < arr2.length; i++) { sum = (sum + arr2[i]) % mod ; } System.out.println((a*sum)%mod); } } public static int get_m(int a) { int i = 1; while (a > 0) { a /= 10; i *= 10; } return i; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |