Description

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

      * * *
x * *
-------
* * *
* * *
-------
* * * *

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

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

写一个程序找出所有的牛式。

Input

Line 1:数字的个数n。 Line 2:N个用空格分开的数字(每个数字都∈ {1,2,3,4,5,6,7,8,9})。

Output

 共一行,一个数字。表示牛式的总数。
 下面是样例的那个牛式。

        2 2 2
x 2 2
---------
4 4 4
4 4 4
---------
4 8 8 4

Sample Input

5
2 3 4 6 8

Sample Output

1

解题思路:纯粹的暴力枚举一下即可,不过为了提高代码效率,我们可以将查找判断该数的组成数是否给定集合写成一个函数。
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int vis[];
int judge(int x)
{
int k;
while(x)
{
k=x%;
if(!vis[k])
{
return ;
}
x=x/;
}
return ;
}
int main()
{
int n,i,j,x,y,counts,a;
scanf("%d",&n);
memset(vis,,sizeof(vis));
for(i=; i<n; i++)
{
scanf("%d",&a);
vis[a]=;///记录可以出现的数
}
counts=;
for(i=; i<=; i++)///牛式第一行
{
if(judge(i))
{
for(j=; j<=; j++)///牛式第二行
{
if(judge(j))
{
if(i*j>)
{
continue;
}
x=j/;
y=j%;///牛式三四行
if(x*i>||y*i>)
{
continue;
}
if(judge(i*j)&&judge(x*i)&&judge(y*i))///牛式第五行
{
counts++;
}
}
}
}
}
printf("%d\n",counts);
return ;
}

USACO 1.3.4 Prime Cryptarithm 牛式(模拟枚举)的更多相关文章

  1. 2312--1.3.4 Prime Cryptarithm 牛式

    Description 下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式. * * * x * * ------- * * * * * * ------ ...

  2. 【USACO题库】1.3.4 Prime Cryptarithm牛式

    好久没有发题解了,今天发一个很久很久之前写过得题吧 题目其实莫名的难 但是理解后,原来就是一只纸老虎 题目加工中~~~~(缩短题目) 加工完成:已知数字1-9组成集合的一个子集,求满足题意乘法步骤的情 ...

  3. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

  4. USACO 1.3.3 Prime Cryptarithm

    题目链接:1.3.3 我用的枚举法,即每产生一组数据就判断是否是所给数字里的. AC还沾沾自喜,但一看题解,发现自己的代码真low... 在平时练习时,应该追求高效,精炼的代码,这样比赛时才能省出大量 ...

  5. 洛谷P1211 [USACO1.3]牛式 Prime Cryptarithm

    P1211 [USACO1.3]牛式 Prime Cryptarithm 187通过 234提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 题面错误 题目描述 ...

  6. l洛谷——P1211 [USACO1.3]牛式 Prime Cryptarithm

    P1211 [USACO1.3]牛式 Prime Cryptarithm 题目描述 下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式. *** x ** ...

  7. 洛谷 P1211 [USACO1.3]牛式 Prime Cryptarithm

    P1211 [USACO1.3]牛式 Prime Cryptarithm 题目描述 下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式. *** x ** ...

  8. 【USACO 1.3.4】牛式

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

  9. USACO Section1.3 Prime Cryptarithm 解题报告

    crypt1解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

随机推荐

  1. EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除

    原文链接:http://blog.csdn.net/fanbin168/article/details/51485969   批量插入 (17597条数据批量插入耗时1.7秒)   using Sys ...

  2. MySQL----navicat for mysql(破解版)可视化数据库操作

    本博文介绍破解版navicat for mysql的安装方法及常用操作 navicat for mysql是一个专业的MySQL数据库图形化界面工具. 百度云下载地址:https://pan.baid ...

  3. 使用tp3.2和mbUploadify.js上传图片的代码,记录一下

    HTML: <div class="form-group"> <label class="col-sm-1 control-label no-paddi ...

  4. 加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题

    原创 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如:1+2+3+...+10*11+12+...+27*28+ ...

  5. Python之文件及文件系统

    open() 方法: Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open( ...

  6. java入门---修饰符&访问修饰符&非访问修饰符

        Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符     修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...

  7. PL/SQL轻量版(一)——入门介绍

    一.概述 1.概念对比: SQL:结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目 ...

  8. 20155320 2016-2017-2 《Java程序设计》第二周学习总结

    20155320 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了java语言的基础语法,我发现与以前学过的c语言有许多共同点,无论是从一些基本 ...

  9. 20155336 2016-2017-2 《Java程序设计》第三周学习总结

    20155336 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 类与对象 定义: 对象(Object):存在的具体实体,具有明确的状态和行为. 类( ...

  10. # 20155337 2016-2017-2 《Java程序设计》第九周学习总结

    20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...