hdu 1757 A Simple Math Problem
来源:互联网 发布:windows升级助手 编辑:程序博客网 时间:2024/06/05 14:01
A Simple Math Problem
Lele now is thinking about a simple function f(x).
If x < 10 f(x) = x.If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);And ai(0<=i<=9) can only be 0 or 1 .Now, I will give a0 ~ a9 and two positive integers k and m ,and could you help Lele to caculate f(k)%m.
Input
The problem contains mutiple test cases.Please process to the end of file.
In each case, there will be two lines.
In the first line , there are two positive integers k and m. ( k<2*10^9 , m < 10^5 )
In the second line , there are ten integers represent a0 ~ a9.
Output
For each case, output f(k) % m in one line.
Sample Input
10 99991 1 1 1 1 1 1 1 1 120 5001 0 1 0 1 0 1 0 1 0
Sample Output
45104
题目意思还是很清晰,刚开始觉得会超时,但是没有。
看着写的
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define ll long long#define N 18#define M 10ll n, m;struct mtx{ int x[N][N];};mtx uni, ini;void init(){ memset( ini.x, 0, sizeof( ini.x )); for( int i = 1 ; i < M ; i ++ ){ ini.x[i][i-1] = 1; } memset( uni.x, 0, sizeof( uni.x ));/// for( int i = 0 ; i < M ; i ++ ){/// uni.x[i][i] = 1; }}mtx g_m( mtx a, mtx b ){ mtx c; for( int i = 0 ; i < M ; i ++ ){ for( int j = 0 ; j < M ; j ++ ){ c.x[i][j] = 0; for( int k = 0 ; k < M ; k ++ ){ c.x[i][j] += (a.x[i][k] * b.x[k][j]) % m; } c.x[i][j] %= m; } } return c;}mtx s_m( mtx a , mtx b , int t ){ t %= m; while( t ){ if( t & 1 ) b = g_m( a , b ); a = g_m( a, a ); t >>= 1; } return b;}int main(){ freopen( "in.txt", "r", stdin ); while( scanf( "%d%d", &n, &m ) != EOF ){//cout<<n<<" "<<m<<endl; init(); for( int i = 0 ; i < M ; i ++ ){ scanf( "%d", &ini.x[0][i] ); } if( n < M ){ printf( "%d\n", n%m ); } else{ mtx ant = s_m( ini, uni, n-9 );/// int sum = 0; for( int i = 0 ; i < M ; i ++ ){ sum += ( ant.x[0][i] * (9-i) ) % m;/// } printf( "%d\n", sum%m ); } } return 0;}
模版
阅读全文
0 0
- HDU 1757 A Simple Math Problem
- HDU 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem
- Hdu 1757 A Simple Math Problem
- A Simple Math Problem hdu 1757
- HDU-1757A Simple Math Problem
- HDU 1757 A Simple Math Problem
- hdu 1757:A Simple Math Problem
- hdu 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem 矩阵
- hdu 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem 矩阵
- HDU 1757 A Simple Math Problem
- 【HDU 1757 A Simple Math Problem】+ 矩阵
- HDU 1757 A Simple Math Problem
- HDU 1757A Simple Math Problem
- HDU:1757 A Simple Math Problem
- The Trip, 2007 UVA
- poj 3026 Borg Maze 【bfs+最小生成树】
- IO流文件的读取与写入
- Qt5.7 编译V-REP
- Codeforces Round #429 (Div. 2) 题解(ABCD)
- hdu 1757 A Simple Math Problem
- delphi: reference to(匿名方法)
- 莫烦 tensorflow 笔记 (一)搭建神经网络
- 补一下我曾经拉下的东西——dfs
- ios的app内购研究
- bzoj 1083: [SCOI2005]繁忙的都市 并查集
- java常用代码
- Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】
- Drools Workbench 7.2.0.Final综合学习-驾照申请案例