....
2015-08-15 16:07
337 查看
C - 道
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
SubmitStatusPracticeCodeForces
450B
Description
Jzzhu has invented a kind of sequences, they meet the following property:
![](http://7xjob4.com1.z0.glb.clouddn.com/a3ffcf1c3e12b33768ccdfcb85af58fb)
You are given x and
y, please calculate fn modulo
1000000007(109 + 7).
Input
The first line contains two integers x and
y(|x|, |y| ≤ 109). The second line contains a single integer
n(1 ≤ n ≤ 2·109).
Output
Output a single integer representing fn modulo
1000000007(109 + 7).
Sample Input
Input
Output
Input <
4000
/div>
Output
Hint
In the first sample, f2 = f1 + f3,
3 = 2 + f3,
f3 = 1.
In the second sample, f2 = - 1;
- 1 modulo (109 + 7) equals
(109 + 6).
这道题在比赛的时候没有做出来 是因为刚开始一直在想着能不能用(a+b)%c=(a%c)%(b%c)的变形 没有往几个数一循环这方面想 这个题就是6个数一循环
注意::《负数对某个数取余》
代码:
#include<stdio.h>
#include<string.h>
#define INF 1000000007
int main()
{
long long n,m,s[10];
int i;
while(~scanf("%lld %lld",&n,&m))
{
s[1]=n;
s[2]=m;
for(i=3;i<=5;i++)
{
s[i]=s[i-1]-s[i-2];
}
s[0]=s[5]-s[4];///是s[0] 不是s[6].因为下面是取余
scanf("%lld",&n);
int k;
k=n%6;
if(s[k]>=0)
{
printf("%lld\n",s[k]%INF);
}
else
{
while(s[k]<0) ///负数
{
s[k]=s[k]+INF;
}
printf("%lld",s[k]%INF);
}
}
return 0;
}
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
SubmitStatusPracticeCodeForces
450B
Description
Jzzhu has invented a kind of sequences, they meet the following property:
You are given x and
y, please calculate fn modulo
1000000007(109 + 7).
Input
The first line contains two integers x and
y(|x|, |y| ≤ 109). The second line contains a single integer
n(1 ≤ n ≤ 2·109).
Output
Output a single integer representing fn modulo
1000000007(109 + 7).
Sample Input
Input
2 3 3
Output
1
Input <
4000
/div>
0 -12
Output
1000000006
Hint
In the first sample, f2 = f1 + f3,
3 = 2 + f3,
f3 = 1.
In the second sample, f2 = - 1;
- 1 modulo (109 + 7) equals
(109 + 6).
这道题在比赛的时候没有做出来 是因为刚开始一直在想着能不能用(a+b)%c=(a%c)%(b%c)的变形 没有往几个数一循环这方面想 这个题就是6个数一循环
注意::《负数对某个数取余》
代码:
#include<stdio.h>
#include<string.h>
#define INF 1000000007
int main()
{
long long n,m,s[10];
int i;
while(~scanf("%lld %lld",&n,&m))
{
s[1]=n;
s[2]=m;
for(i=3;i<=5;i++)
{
s[i]=s[i-1]-s[i-2];
}
s[0]=s[5]-s[4];///是s[0] 不是s[6].因为下面是取余
scanf("%lld",&n);
int k;
k=n%6;
if(s[k]>=0)
{
printf("%lld\n",s[k]%INF);
}
else
{
while(s[k]<0) ///负数
{
s[k]=s[k]+INF;
}
printf("%lld",s[k]%INF);
}
}
return 0;
}
相关文章推荐
- POJ 3253 Fence Repair
- 最大子段和
- 编写高质量代码改善C#程序的157个建议——建议36:使用FCL中的委托声明
- Openerp附件存储位置
- POJ 3349-Snowflake Snow Snowflakes(哈希)
- OC字符串总结
- apache Apache winnt_accept: Asynchronous AcceptEx failed 错误的解决
- Compromise(LCS)
- JavaScript基础学习之-自定义对象(2)
- OpenGL ES颜色混合
- liferay6.2系统管理员篇-liferay的内容管理系统WCM来进行站点快速建立
- hibernate mysql映射类型
- poj3465 贪心+优先队列
- 1034. 有理数四则运算(20)
- [实用工具]思维导图(XMind入门)
- 多线程同步之条件变量
- linux_shell_类似sql的orderby 取最大值
- 从Struts2源码学习Struts2的工作原理
- C/C++ 中struct嵌套的内存分配
- 【问题】tableView的每组的头部不不能滚动的解决方案