nowcoder acm contest 5881 B 莫得难题

Posted zzz-hhh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nowcoder acm contest 5881 B 莫得难题相关的知识,希望对你有一定的参考价值。

题目描述

自己看

通俗易懂

下面是lkp的想法

()¥#)@()&%()@¥#()&¥#&@()#%&%
&¥#……%@#¥#@¥@%&

题解

我们可以看出一位数有5 个两位数有25个
n位数有5^n个, 显然我们可以推出
我们对 (C_n^m)得到的数,不断地%5 /5
对每一次%5 得到的余数就是答案

code

#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>

#define int long long
#define rr register

#define inf 1e9
#define MAXN 100010

using namespace std;

inline int read(int &T) {
	int s = 0, f = 0;
	char ch = getchar();
	while (!isdigit(ch)) f |= ch == ‘-‘, ch = getchar();
	while (isdigit(ch)) s = s * 10 + (ch ^ 48), ch = getchar();
	return T = f ? -s : s;
}

const int mod = 1e9 + 7;

void print(int x) {
	if (x < 0) putchar(‘-‘), x = -x;
	if (x > 9) print(x / 10);
	putchar(x % 10 + 48);
}

int t, n, m;

int a[10];

int c[200][200];

inline int init() {
    a[1] = 1;
    a[2] = 2;
    a[3] = 3;
    a[4] = 5;
    a[0] = 9;
	for (rr int i = 0; i <= 100; i++) c[i][0] = 1;
	for (rr int i = 1; i <= 100; i++)
		for (rr int j = 1; j <= 100; j++) 
			c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
}

void pr(int x) {
	if (x > 5) {
		if (x % 5 != 0)
			pr(x / 5);
		else pr(x / 5 - 1);
	}
	cout << a[x % 5]; 
}

signed main() {
	init();
	t = read(t);
	while (t--) {
		n = read(n);
		m = read(m);
		pr(c[n][m]);
		puts("");
	}
}




以上是关于nowcoder acm contest 5881 B 莫得难题的主要内容,如果未能解决你的问题,请参考以下文章

nowcoder 207G - Coding Contest - [最小费用最大流]

hdu 5881 Tea (2016 acm 青岛网络赛)

数学规律类

[nowcoder]最长区间

[nowcoder]因数个数和

online contest