java P1211 [USACO1.3]牛式 Prime Cryptarithm

题目描述
下面是一个乘法竖式,如果用我们给定的那 n 个数字来取代 *,可以使式子成立的话,我们就叫这个式子为牛式。

      ***
x      **

     ***
    ***

    ****

数字只能取代 *,当然第一位不能为 00,况且给定的数字里不包括 00。

注意一下在美国的学校中教的“部分乘积”,第一部分乘积是第二个数的个位和第一个数的积,第二部分乘积是第二个数的十位和第一个数的乘积。

请计算出牛式的数量。

输入格式
第一行一个正整数 n,表示可用的数集。
第二行 n 个正整数 ai

,表示可用的数。

输出格式
输出一行一个整数,表示牛式的总数。

输入输出样例

输入 #1

5
2 3 4 6 8

输出 #1

1

import java.util.Scanner;

public class Main {
	static int[] p = new int[13];
	static boolean f(int n) {
		while(n != 0) {
			if (p[n%10] == 0) {
				return false;
				
			}
			n/=10;
		}
		return true;
	}
	
	static boolean check(int x, int y) {
		int a = x*(y%10), b = x*(y/10),test = x*y;
		if (a > 999 || b > 999 || test > 9999) {
			return false;
		}
		if (f(x) && f(y) && f(a) && f(b) && f(test)) {
			return true;
		} else {
			return false;
		}
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int n = in.nextInt();
		int k,ans = 0;
		for (int i = 0; i < n; i++) {
			k = in.nextInt();
			p[k] = 1;
		}
		for (int i = 100; i < 1000; i++) {
			for (int j = 10; j < 100; j++) {
				if (check(i, j)) {
					ans++;
				}
			}
		}
		
		System.out.println(ans);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值