crypt1

来源:互联网 发布:淘宝网中年女羽绒服 编辑:程序博客网 时间:2024/06/06 18:41

Prime Cryptarithm

简述:

给定一些数字(没有零),满足下图的乘法竖式中凡每一个数都在这个数字集合中的,数字不限使用次数。有多少个这样的竖式。
这里写图片描述
这是一个三位数乘以两位数,需要枚举的数不多,111~999×11~99;依次判断符合标准的,以及过程中的数符合的。

代码:

#include <stdio.h>#include <stdlib.h>int n, a[10];int islegal(int x, int len);int ina(int x);int main(void){    freopen("crypt1.in", "r", stdin);    freopen("crypt1.out", "w", stdout);    int i, j,cnt = 0;    scanf("%d", &n);    for(i = 0; i < n; i++)        scanf("%d", &a[i]);    for(i = 111; i < 999; i++)    {        if(!islegal(i, 3))continue;        for(j = 11; j < 99; j++)        {            if(!islegal(j, 2))continue;            if(islegal(i * (j % 10), 3) && islegal(i * (j / 10), 3) && islegal(i * j, 4))                cnt++;        }    }    printf("%d\n", cnt);    return 0;}int islegal(int x, int len){    if(len == 2 && x > 99)return 0;    if(len == 3 && x > 999)return 0;    if(len == 4 && x > 9999)return 0;    while(x > 0)    {        if(!ina(x % 10))return 0;        x /= 10;    }    return 1;}int ina(int x){    int i;    for(i = 0; i < n; i++)        if(a[i] == x)            return 1;    return 0;}
原创粉丝点击