意甲冠军:

给你一个数列:

f(0) = 0

f(n) = g(n,f(n-1))

g(x,y) = ((y-1)*x^5+x^3-xy+3x+7y)%9973

让你求f(n)  n <= 1e8

思路:

令m = 9973

easy观察g(x,y) = g(x%m,y)

f(x+m) = g( (x+m) %m , f(x+m-1))........

能够得到 f(x+m) = (A*f(x)+B)%m

f(x+2m) = (A*f(x+m)+B)%m

,.....

令x+km = n

先求出f(x) 在求出A,B然后算出f(n)

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int m = 9973;
int A,B;
int n;
int x,cnt;
int getX5(int x){
int ret = 1;
for(int i = 1; i <= 5; i++) {
ret = (x*ret)%m;
}
return ret;
}
int getX3(int x) {
int ret = 1;
for(int i = 1; i <= 3; i++) {
ret = (ret*x)%m;
}
return ret;
}
int getPos(int x) {
return (x%m+m)%m;
}
int func(int n) {
if(n==0) return 0;
return getPos((getPos(getX5(n)-n+7)*func(n-1))%m+getPos((-getX5(n)+getX3(n)+3*n))); }
void solve() {
A = 1;
B = 0;
int ret = func(x);
for(int i = x+m; i >= x+1; i--) {
int k = i%m;
B = (B+A*getPos((-getX5(k)+getX3(k)+3*k)))%m;
A = (A*getPos(getX5(k)-k+7))%m;
}
for(int i = 1; i <= cnt; i++) {
ret = (A*ret+B)%m;
}
printf("%d\n",ret); }
int main() {
while(~scanf("%d",&n)) {
x = n%m;
cnt = n/m;
solve(); }
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Ural 1309 Dispute (递归)的更多相关文章

  1. ural 1353. Milliard Vasya's Function(背包/递归深搜)

    1353. Milliard Vasya's Function Time limit: 1.0 second Memory limit: 64 MB Vasya is the beginning ma ...

  2. URAL 1181 Cutting a Painted Polygon【递归+分治】

    题目: http://acm.timus.ru/problem.aspx?space=1&num=1181 http://acm.hust.edu.cn/vjudge/contest/view ...

  3. URAL 1826. Minefield(数学 递归)

    题目链接:http://acm.timus.ru/problem.aspx? space=1&num=1826 1826. Minefield Time limit: 0.5 second M ...

  4. ural 1242. Werewolf

    1242. Werewolf Time limit: 1.0 secondMemory limit: 64 MB   Knife. Moonlit night. Rotten stump with a ...

  5. URAL 1029 Ministry

    URAL 1029 思路: dp+记录路径 状态:dp[i][j]表示到(i,j)这个位置为止的最少花费 初始状态:dp[1][i]=a[1][i](1<=i<=m) 状态转移:dp[i] ...

  6. Ural 1183 Brackets Sequence(区间DP+记忆化搜索)

    题目地址:Ural 1183 最终把这题给A了.. .拖拉了好长时间,.. 自己想还是想不出来,正好紫书上有这题. d[i][j]为输入序列从下标i到下标j最少须要加多少括号才干成为合法序列.0< ...

  7. kotlin递归&尾递归优化

    递归: 对于递归最经典的应用当然就是阶乘的计算啦,所以下面用kotlin来用递归实现阶乘的计算: 编译运行: 那如果想看100的阶乘是多少呢? 应该是结果数超出了Int的表述范围,那改成Long型再试 ...

  8. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  9. 算法笔记_013:汉诺塔问题(Java递归法和非递归法)

    目录 1 问题描述 2 解决方案  2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...

随机推荐

  1. jQuery 自学笔记—5 遍历

    什么是遍历? jQuery 遍历,意为“移动”,用于根据其相对于其他元素的关系来“查找”(或选取)HTML 元素.以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止. 下图展示了一个家族树. ...

  2. hdu1428之dfs+spfa

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. Java_并发线程_CompletionService

    1.CompletionService源代码分析 CompletionService内部实现还是维护了一个可堵塞的队列,通过代理设计模式.从而操作队列. /** * Creates an Execut ...

  4. 【Linux编程】存储映射I/O

    存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射,对缓冲区的读.写操作就是对文件的读.写操作,从而能够不再使用read.write系统调用. 将文件映射到存储区的函数由mmap完毕,函数原型 ...

  5. AntiXSS - 支持Html同时防止XSS攻击

    AntiXSS - 支持Html同时防止XSS攻击 跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编 ...

  6. sqlserver安全加固

      sqlserver2012安装好以后必要的安全加固,不然非常多DBA的信息普通账户登录后都能够读取到.  --use [master] --GO --DENY VIEW SERVER STATE ...

  7. CSDN博客的一些问题(友好的吐槽)--后记,有一点点改进

    近期,CSDN博客真的非常不稳定,时常会出现503错误. 昨天.我发现自己的博客的訪问量仅仅有4万多,今天最终发现它变回原来的6万多了. 我写博客不是为了这个訪问量,可是,CSDN这点使用问题啦. 或 ...

  8. Python数据结构之注意事项

    1.列表 列表是Python中使用最频繁的数据结构,列表提供很多函数操作,比如下标存取,分片,index,append,remove等等. 例如:  list=[1,2,'hello','python ...

  9. linux编程进阶书推荐APUE,UNP

    编程进阶这里强烈推荐<unix环境高级编程>(简称APUE)和<unix网络编程>(简称UNP),这两本书可是经典中的经典啊,作 者是大名鼎鼎的 W.Richard Steve ...

  10. Spring MVC中一般 普通类调用service

    在Spring MVC中,Controller中使用service只需使用注解@Resource就行,但是一般类(即不使用@Controller注解的类)要用到service时,可用如下方法: 1.S ...