模3问题
来源:互联网 发布:淘宝店排名规则 编辑:程序博客网 时间:2024/06/04 01:13
/*如果是f[i-1][0]的话,说明原来的数模3除尽了,所以这个时候再加一位数,这个数只能是3,如果是f[i-1][1]的话,说明原来的数模3除余1,所以这个时候再加一位数,这个数可能是2或者5,这两种情况,所以这种情况共有2*f[i-1][1]个,如果是f[i-1][2]的话,说明原来的数模3除余2,所以这个时候再加一位数,这个数可能是1或者4,这两种情况,所以这种情况共有2*f[i-1][2]个f[i][0]=f[i-1][0]+f[i-1][1]*2+f[i-1][2]*2再按照同样的道理推f[i][1]和f[i][2]*/import java.math.BigInteger;import java.util.Scanner;public class five {public static void main(String[] args) {BigInteger[][] f = new BigInteger[100001][4];int n,i;Scanner sc = new Scanner(System.in); n = sc.nextInt();BigInteger one = new BigInteger("1");BigInteger two = new BigInteger("2"); BigInteger big = new BigInteger("100007");f[1][0] = two;f[1][1] = one;f[1][2] = two;for(i = 2;i <= n;i++){f[i][0] = ((one.multiply(f[i-1][0])).add(two.multiply(f[i-1][1]))).add(two.multiply(f[i-1][2]));f[i][1] = ((two.multiply(f[i-1][0])).add(one.multiply(f[i-1][1]))).add(two.multiply(f[i-1][2])); f[i][2] = ((two.multiply(f[i-1][0])).add(two.multiply(f[i-1][1]))).add(one.multiply(f[i-1][2])); }System.out.println(((f[n][1]).subtract(one)).remainder(big));}}如果你要计算f[i][0]的话,你肯定是由f[i-1][0],f[i-1][1],f[i-1][2]三个值地推来的,
0 0
- 模3问题
- 问题3
- 问题3
- 问题3
- Keil 3光标问题 以及汉字问题
- 3n+1问题(Hailstone问题)
- 背包问题3:多重背包问题
- 2sum问题和3sum问题
- 递归问题,实例3Hanoi问题
- 囚犯模豆子问题
- 模算术问题
- 模体发现问题
- 取模问题
- 数论的模问题
- c++取模问题
- 整数求模问题
- 【hpuoj】模电问题
- Kylix 3 字体问题
- js map()
- C 语言常用运算符
- C语言输入与输出
- [01]Maven的学习笔记
- Leetcode 1. Two Sum
- 模3问题
- C语言数组
- Leetcode Reverse Bits
- 欢迎使用CSDN-markdown编辑器
- 使用 MEAN 进行全栈开发基础篇——5、接着前面玩儿编辑
- PDO错误与错误处理
- Leetcode Bulls and Cows
- 【Linux】Linux下修改主机名-简单三步搞定
- 怎样软件开发步骤是