FZU 8月有奖月赛A Daxia Wzc's problem (Lucas)

2023-10-22 15:40

本文主要是介绍FZU 8月有奖月赛A Daxia Wzc's problem (Lucas),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem A Daxia & Wzc's problem

Accept: 42    Submit: 228
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题:

 

Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d;

 

首先让Daxia求出数列A(0)前n项和,得到新数列A(1);

 

然后让Daxia求出数列A(1)前n项和,得到新数列A(2);

 

接着让Daxia求出数列A(2)前n项和,得到新数列A(3);

 

...

 

最后让Daxia求出数列A(m-1)前n项和,得到新数列A(m);

 Input

测试包含多组数据,每组一行,包含四个正整数a(0<=a<=100),d(0<d<=100),m(0<m<=1000),i(1<=i<=1000000000).

 Output

每组数据输出一行整数,数列A(m)的第i项mod1000000007的值.

 Sample Input

1 1 3 4

 Sample Output

35

 Hint

A(0): 1 2 3 4

 

A(1): 1 3 6 10

 

A(2): 1 4 10 20

 

A(3): 1 5 15 35

 

So the 4th of A(3) is 35.
Cached at 2016-08-17 19:08:15.

 

Submit  Back  Status
草稿纸上手写一下
a1  a1+d  a1+2d  a1+3d...
a1  2a1+d  3a1+3d  4a1+6d...
a1  3a1+d  6a1+4d  10a1+10d...
...
可以发现这个是一个类似杨辉三角的东西,大概就是C(n, m)这样算的。
然后就用Lucas就行了
 1 //#pragma comment(linker, "/STACK:102400000, 102400000")
 2 #include <algorithm>
 3 #include <iostream>
 4 #include <cstdlib>
 5 #include <cstring>
 6 #include <cstdio>
 7 #include <vector>
 8 #include <cmath>
 9 #include <ctime>
10 #include <list>
11 #include <set>
12 #include <map>
13 using namespace std;
14 typedef long long LL;
15 typedef pair <int, int> P;
16 const int N = 1e3 + 5;
17 LL mod = 1e9 + 7;
18 LL f[N];
19 
20 LL Pow(LL a , LL n , LL mod) {
21     LL res = 1;
22     while(n) {
23         if(n & 1)
24             res = res * a % mod;
25         a = a * a % mod;
26         n >>= 1;
27     }
28     return res;
29 }
30 
31 LL Comb(LL a , LL b , LL mod) {
32     if(a < b) {
33         return 0;
34     }
35     if(a == b) {
36         return 1;
37     }
38     LL ca = 1;
39     for(LL i = 0 ; i < b ; i++) {
40         ca = (a - i) % mod * ca % mod;
41     }
42     return (ca * f[b]) % mod;
43 }
44 
45 LL Lucas(LL n , LL m , LL mod) {
46     LL ans = 1;
47     while(m && n && ans) {
48         ans = (ans * Comb(n % mod , m % mod , mod)) % mod;
49         n /= mod;
50         m /= mod;
51     }
52     return ans;
53 }
54 
55 int main()
56 {
57     f[0] = 1;
58     for(LL j = 1; j < N; ++j) {
59         f[j] = j * f[j - 1] % mod; //阶乘
60     }
61     for(LL j = 0; j < N; ++j) {
62         f[j] = Pow(f[j], mod - 2, mod); //逆元
63     }
64     LL a, b, m, i;
65     while(cin >> a >> b >> m >> i) {
66         if(i == 1) {
67             cout << a << endl;
68             continue;
69         }
70         LL x = Lucas(m + i - 1, m, mod) * a % mod;
71         LL y = Lucas(m + 1 + i - 2, m + 1, mod) * b % mod;
72         cout << (x + y) % mod << endl;
73     }
74     return 0;
75 }
View Code

 

转载于:https://www.cnblogs.com/Recoder/p/5781424.html

这篇关于FZU 8月有奖月赛A Daxia Wzc's problem (Lucas)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/262332

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

fzu 2277 Change 线段树

Problem 2277 Change Time Limit: 2000 mSec    Memory Limit : 262144 KB  Problem Description There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each node has a value ai.

fzu 2275 Game KMP

Problem 2275 Game Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description Alice and Bob is playing a game. Each of them has a number. Alice’s number is A, and Bob’s number i

CPC23三 K.(Lucas定理)

K.喵喵的神·数 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵对组合数比较感兴趣,并且对计算组合数非常在行。同时为了追求有后宫的素质的生活,喵喵每天都要研究质数。 我们先来复习一下什么叫做组合数。对于正整数P、T 然后我们再来复习一下什么叫质数。质数就是素数,如果说正整数N的约数只有1和它本身,N

11991 - Easy Problem from Rujia Liu?

题意: 输入一串整型数列,再输入两个数k,v,输出第k个v的序号。不存在则输出0,如第一个样例 8 41 3 2 2 4 3 2 11 3 //第1个3,序号为2,输出22 4 //第2个4,不存在,输出03 2 //第3个2,序号为7,输出74 2 思路: struct num {

HDU 1016 Prime Ring Problem (深搜)

OJ题目 : click here ~~ 大概题意:n个数,形成一个环,使得相邻两个数的和为素数。以1开始,按字典序输出序列。 很简单的深搜。 AC_CODE int n;int visit[22];int num[22];int len;bool Is_prime(int x){for(int i = 2;i*i <= x;i++)if(x%i == 0) return

LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem

在将几块盘做LVM时,遇到一个之前都没遇到过的问题: root@ubuntu:~# pvcreate /dev/sdc1Can't open /dev/sdc1 exclusively. Mounted filesystem? 首先第一反应就是查看这个分区是否已经在使用了,但是没有。 查看硬盘的一些信息: root@ubuntu:~# cat /proc/partitionsmajo

【FZU】1921 栀子花开 线段树果题

Problem 1921 栀子花开 Accept: 216    Submit: 745 Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description 这是一个栀子花开的季节,也是一个离别的季节,四年一千多个日日夜夜,那校园的角角落落,留下了我们沉思的身影;那上百次的成绩排名表,印证了我们深深浅浅不断进步的

【FZU】2171 防守阵地 II 线段树

Problem 2171 防守阵地 II Accept: 96    Submit: 360 Time Limit: 3000 mSec    Memory Limit : 32768 KB Problem Description 部队中总共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,指挥部将选择M个士兵依次进入指定地点进行防守任务,获得