关于 ZJCPC2004第二题
来源:互联网 发布:tvp动画软件 编辑:程序博客网 时间:2024/06/14 05:07
首先想到的是进行归纳或者是进行分解,甚至是预习了一把特征方程相关知识。但是后面对于7的取模才让我恍然大悟。在网上看别人的想法都是认为1,1为循环节,但是假如a=7,b=7的时候呢?因为取模,导致除了第1 ,2 项,其他的全是0 ,所以认为1,1是循环结并不是正解。我认为确实是有循环数列,证明略,但是这个循环数列的长度是未知的,所以应该注意找出这个循环数列的开头和结尾,确定出要找的n在数列中的相对位置,然后再确定在整个数列中的绝对位置即可。
package com.company;import java.util.*;public class Main { public static void main(String[] args) { // write your code here Scanner sc = new Scanner(System.in); int a, b, n, j, k, temp, time; int[][] sum = new int[7][7]; int[] lp = new int[50]; a = sc.nextInt(); b = sc.nextInt(); n = sc.nextInt(); oo: while (true) { if (a == 0 && b == 0 && n == 0) break; if (n == 1) { System.out.println(1); } else { a %= 7; b %= 7; for (int i = 0; i < 7; i++) for (int p = 0; p < 7; p++) sum[i][p] = 0; j = k = 1; lp[0] = k; time = 1; while (sum[j][k] == 0) { if (time == n - 1) { System.out.println(j); a = sc.nextInt(); b = sc.nextInt(); n = sc.nextInt(); continue oo; } sum[j][k] = time; lp[time] = j; temp = (a * j + b * k) % 7; k = j; j = temp; time++; } n -= sum[j][k]; time -= sum[j][k]; System.out.println(lp[n % time +sum[j][k] - 1]); } a = sc.nextInt(); b = sc.nextInt(); n = sc.nextInt(); } }}
0 0
- 关于 ZJCPC2004第二题
- ZJCPC2004 Tempter of the Bone
- 关于第二份工作
- 第二章 关于mapreduce
- 关于第二类斯特林数
- 第二章 关于MapReduce
- 第二章 关于MapReduce
- 《第二篇》关于健康
- 水题第二记 关于大数据以及超时
- 关于调和级数问题(14届蓝桥杯b组第二题)
- 关于acm程序设计书中题目 #B第二题
- 第二章第二题
- 第二章第二题
- 第二章第二题
- 第二天 关于XML语言
- 第二篇:关于数据类型转换
- 关于入职第二天
- 关于《C++程序设计教程》(第二版)钱能著 第二章课后习题第5题的解答程序
- 用变量a给出下面的定义
- 关于include的正确理解和用法
- mybatis的查询类型
- Red Hat Enterprise 6.5 在虚拟机上将系统语言修改为中文
- HDU 5649 (二分 线段树)
- 关于 ZJCPC2004第二题
- Java VisualVM 多线程监控分析工具
- autoload之composer分析
- 我的第一次vi经历
- 详解Java中native关键字
- HDU 1711 Number Sequence【数字KMP】
- 统一会话
- php单例模式
- hdu 1285 拓扑排序