Пример #1
0
int main() {
	freopen("t.in", "r", stdin);
	prework();
	int TST;
	scanf("%d", &TST);
	while ( TST -- ) {
		int L;
		ll V;
		scanf("%d" LL_FMT, &L, &V);
		if ( V == 0 ) 
			printf("%u\n", HM.find(State(L)));
		else {
			int cnt[4];
			memset(cnt, 0, sizeof(cnt));
			while ( V % 2 == 0 )
				V /= 2, cnt[0]++;
			while ( V % 3 == 0 )
				V /= 3, cnt[1]++;
			while ( V % 5 == 0 )
				V /= 5, cnt[2]++;
			while ( V % 7 == 0 )
				V /= 7, cnt[3]++;
			if ( V != 1 ) printf("0\n");
			else {
				printf("%u\n", HM.find(State(L,cnt[0],cnt[1],cnt[2],cnt[3])));
			}
		}
	}
}
Пример #2
0
int main() {
	freopen("t.in", "r", stdin);
	prework();
	int TST;
	scanf("%d", &TST);
	while ( TST -- ) {
		scanf("%d", &n);
		for ( int i = 0; i < n; i ++ )
			for ( int j = 0; j < n; j ++ )
				scanf("%d", &a[i][j]);
		memset(vis, 0, sizeof(vis));
		ll ans = 0;
		for ( int i = 0; i < n; i ++ )
			for ( int j = 0; j < n; j ++ )
				if ( primeId[a[i][j]] != -1 ) {
					ans += primeId[a[i][j]];
				} else if ( !vis[i][j] ) {
					if ( a[i][j] & 1 )
						ans += a[i][j] / 2 + 2;
					else
						ans += a[i][j] / 2;
					dfs(i, j, a[i][j]&1);
				}
		printf(LL_FMT "\n", ans);
	}
}
Пример #3
0
int main()
{
	prework();
	int n;
	while (scanf("%d", &n) == 1 && n != -1)
		data[n].print();
	return 0;
}
Пример #4
0
int main() {
	freopen("t.in", "r", stdin);
	prework();
//	check();
	int TST;
	scanf("%d", &TST);
	while ( TST -- ) {
		scanf("%d", &K);
		for ( int i = 0; i < K; i ++ ) {
			scanf("%d%d", &A[i], &B[i]);
		}
		int ans = 0;
		for ( int d = 1; d <= B[0]; d ++ ) {
			int acc = phi[d];
			for ( int i = 0; i < K; i ++ )
				acc = mul(acc, B[i]/d-(A[i]-1)/d);
			add(ans, acc);
		}
		for ( int i = 0; i < K; i ++ )
			ans = mul(ans, powMod(B[i]-A[i]+1, kMod-2));
		ans = (-ans + kMod) % kMod;
		printf("%d\n", ans);
	}
}