你这个写法计算一组测试用例的时间复杂度是O(n^2),对于10^6的规模效率肯定是太低太低了。
可以这样
1
1 1
111
1111
。
11111111
从最后一列开始,每一列的和递减1,可以一列一列的加,加完一列取一次余,避免溢出。这样的话时间复杂度是O(n),运行时间在几秒以内。其实这是一道典型的模拟题,就是用数组模拟加法运算。
可以这样
1
1 1
111
1111
。
11111111
从最后一列开始,每一列的和递减1,可以一列一列的加,加完一列取一次余,避免溢出。这样的话时间复杂度是O(n),运行时间在几秒以内。其实这是一道典型的模拟题,就是用数组模拟加法运算。
解决方案 »
- PD4ML处理中文的页面怎么处理乱码的问题?
- new Random()和new Random(System.currentTimeMillis())两个构造方法到底是否等同?
- 请大家看看这个java程序,为什么输出结果不对呢
- 高分请教大地坐标与经纬度的投影方法
- byte string 转换的问题,请教教我
- 想写一个网络电影的抢线程序,求给个思路!
- 如何实例化一个DateInputStream?
- 求助:想用java和SQL Server写个程序。
- 关于用java读取文件内容的问题。
- JAVA事件处理
- 错误:需要class、interface或enum
- volatile变量是否会在拷贝在线程的工作内存中?
不理解题意?求说明
我用的是递归的方法,不知道怎么使用。。
private static void getSum(int a, int n) {
double sum = 0;
sum += getBefore(a, n); System.out.println((long) (sum % 1000000007));
} private static double getBefore(int a, int n) {
if (n == 1) {
return a;
} else {
return Math.pow(10, n - 1) + getBefore(a, n - 1);
}
}