南邮 OJ 1922 HUMA的惩罚

来源:互联网 发布:韩顺平js下载 编辑:程序博客网 时间:2024/04/29 10:41

HUMA的惩罚

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 65            测试通过 : 15 

比赛描述

    贲神陪基友看电影被HUMA发现了,为了惩罚男友,HUMA丢给贲神一项繁重的任务:定义f(x)=(x+a)/b,给出一个数x,将它用f(x)迭代n次(即计算f(f(f(…f(x)))))的结果。为了防止贲神作弊,HUMA要求每次f(t)的结果要进行向下取整运算后才能进行下一次迭代。那么问题来了,________?



输入

第一行为一个正整数T,表示有T组数据

每组数据为4个正整数:n,x,a,b (0<n,x,a<0^18,0<b<100)

输出

每组输出一个整数m,表示经过n次迭代后取整的结果(计算结果对1000000007取模)

样例输入

3
1 1 2 3
2 1 2 3
2 5 2 3

样例输出

1
1
1

题目来源

LYD





/* Time Limit Exceed at Test 1#include<iostream>using namespace std;#define MOD 1000000007int main(){__int64 t,n,x,a,b;scanf("%I64d",&t);while(t--){scanf("%I64d%I64d%I64d%I64d",&n,&x,&a,&b);while(n--){x = (x+a)%MOD/b;}printf("%I64d\n",x);}}*/#include<iostream>using namespace std;#define MOD 1000000007int main(){__int64 t,n,x,a,b,lastX;scanf("%I64d",&t);while(t--){scanf("%I64d%I64d%I64d%I64d",&n,&x,&a,&b);lastX = x;while(n--){x = (x+a)/b;if(x==lastX){break;}lastX = x;}printf("%I64d\n",x%MOD);}}


0 0
原创粉丝点击