0 分求调悬关!!!
查看原帖
0 分求调悬关!!!
842408
pangyuchen75楼主2023/12/17 16:52

自己测了好几组数据都跑对了啊

#include <cstdio>
#include <cstring>
#define N 105
using namespace std;

int t;
int n, m;
int a[N], b[N], c[N];
int l_a, l_b;
int tot;
int x;

void make_a(int n) {
	l_a = 0;
	memset(a, 0, sizeof(a));
	while(n) {
		a[++l_a] = n % 10;
		n /= 10;
	}
}

void make_b(int n) {
	l_b = 0;
	memset(b, 0, sizeof(b));
	while(n) {
		b[++l_b] = n % 10;
		n /= 10;
	}
}

void multiplication() {
	memset(c, 0, sizeof(c));
	
	for(int i = 1; i <= l_a; ++i) {
		x = 0;
		for(int j = 1; j <= l_b; ++j) {
			c[i + j - 1] += a[i] * b[j] + x;
			x = c[i + j - 1] / 10;
			c[i + j - 1] %= 10;
		}
		c[i + l_b] = x;
	}
	
	l_a += l_b;
	
	while(c[l_a] == 0 && l_a > 1)
		--l_a;
	
	for(int i = 1; i <= l_a; ++i)
		a[i] = c[i];
}

int main() {
	scanf("%d", &t);
	
	while(t-- && scanf("%d%d", &n, &m)) {
		make_a(1);
		
		for(int i = 1; i <= n; ++i) {
			make_b(i);
			multiplication();
		}
		
		tot = 0;
		
		for(int i = 1; i <= l_a; ++i)
			if(a[i] == m)
				++tot;
		
		printf("%d\n", tot);
	}
	
	return 0;
}
2023/12/17 16:52
加载中...