C语言 · 猜算式

题目:猜算式

看下面的算式:

□□ x □□ = □□ x □□□

它表示:两个两位数相乘等于一个两位数乘以一个三位数。 如果没有限定条件,这样的例子很多。

但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。 该算式中1至9的每个数字出现且只出现一次!

比如: 46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 .....

请编程,输出所有可能的情况!

注意:左边的两个乘数交换算同一方案,不要重复输出!

要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 对于编程题目,要求选手给出的解答完全符合ANSI C标准,不能使用c++特性; 不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

 1 #include<stdio.h>
 2 #include<string.h>
 3 bool use[10];//访问标记数组
 4 int a[10];//判断a与b的积是否出现过
 5 int yin1,yin2,yin3,yin4;
 6 int count=0;
 7 void dfs(int begin){
 8     if(begin==10){
 9         yin1=a[1]*10+a[2];
10         yin2=a[3]*10+a[4];
11         yin3=a[5]*10+a[6];
12         yin4=a[7]*100+a[8]*10+a[9];
13         if((yin1*yin2==yin3*yin4) && yin1<yin2){
14             count++;
15             printf("%2d*%2d = %2d*%3d\n",yin1,yin2,yin3,yin4);
16         }
17         return;
18     }
19     for(int i=1; i<=9; i++){
20         if(!use[i]){
21             use[i] = true;
22             a[begin]=i;
23             dfs(begin+1);
24             use[i] = false;
25         }
26     }
27 }
28 int main(){
29     memset(use,false,sizeof(use));
30     dfs(1);
31     printf("\n共有%d个.",count);
32     return 0;
33 }
时间: 2024-10-23 13:12:20

C语言 · 猜算式的相关文章

蓝桥杯-题目:猜算式

题目:猜算式 你一定还记得小学学习过的乘法计算过程,比如: 273x 15------ 1365 273------ 4095 请你观察如下的乘法算式 ***x ***-------- *** *** ***-------- ***** 星号代表某位数字,注意这些星号中,0~9中的每个数字都恰好用了2次.(如因字体而产生对齐问题,请参看图p1.jpg) 请写出这个式子最终计算的结果,就是那个5位数是多少? 注意:只需要填写一个整数,不要填写任何多余的内容.比如说明文字. #include <bi

C语言 猜数字游戏

#include <stdio.h> #include <stdlib.h> #include <time.h> void guess() {  int input = 0;  int ret;  srand((unsigned int)time(NULL));  ret = rand() % 100;  printf("请输入0-100内的数字\n");  do  {   scanf("%d",&input);   if

C语言猜数字小游戏

#include <stdio.h> #include <time.h> #include <stdlib.h> int main() { int x,num,st,ed; char ch; srand((int)time(NULL)); while(1) { printf("请输入你想要猜的数的范围(用空格隔开):"); scanf("%d %d",&st,&ed); ed=ed-st+1; num=rand()

算法笔记_220:猜算式(Java)

目录 1 问题描述 2 解决方案   1 问题描述 看下面的算式: □□ x □□ = □□ x □□□ 它表示:两个两位数相乘等于一个两位数乘以一个 三位数. 如果没有限定条件,这样的例子很多. 但目前的限定是:这9个方块,表示1~9的9个数字 ,不包含0.该算式中1至9的每个数字出现且只出现一次! 比如:46 x 79 = 23 x 15854 x 69 = 27 x 13854 x 93 = 27 x 186..... 请编程,输出所有可能的情况! 注意:左边的两个乘数交换算同一方案,不要

蓝桥杯模拟赛 猜算式

你一定还记得小学学习过的乘法计算过程,比如: 273x 15------ 1365 273------ 4095 请你观察如下的乘法算式 ***x ***-------- *** *** ***-------- ***** 星号代表某位数字,注意这些星号中,0~9中的每个数字都恰好用了2次.(如因字体而产生对齐问题,请参看图p1.jpg) 请写出这个式子最终计算的结果,就是那个5位数是多少? 注意:只需要填写一个整数,不要填写任何多余的内容.比如说明文字. 思路:DFS #include<std

C语言 &#183; 猜灯谜

标题:猜灯谜 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字. 请你用计算机按小明的思路算一下,然后提交"请猜谜"三个字所代表的整数即可. 请严格按照格式,通过浏览器提交答案. 注意:只提交一个3位的整数,不要写其它附加内容,比如:说明性的文字. 1 /*8 9 7*/ 2 #include<string.h> 3 #include<stdio.h> 4 bool use[10]

问题 C: 猜算式(蓝桥杯真题)

时间限制: 1 Sec  内存限制: 128 MB 提交: 349  解决: 126 [提交][状态] 题目描述 看下面的算式: □□ x □□ = □□ x □□□ 它表示:两个两位数相乘等于一个两位数乘以一个三位数. 如果没有限定条件,这样的例子很多. 但目前的限定是:这9个方块,表示1~9的9个数字,不包含0. 该算式中1至9的每个数字出现且只出现一次! 比如: 46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 ..... 请

蓝桥杯---2017模拟赛-高职高专组题目:猜算式

题目: 你一定还记得小学学习过的乘法计算过程,比如: 273 x   15 ------ 1365 273 ------ 4095 请你观察如下的乘法算式 *** x   *** -------- *** *** *** -------- ***** 星号代表某位数字,注意这些星号中, 0~9中的每个数字都恰好用了2次. (如出现因字体而产生的对齐问题,请参看图p1.jpg) 请写出这个式子最终计算的结果,就是那个5位数是多少? 注意:只需要填写一个整数,不要填写任何多余的内容.比如说明文字.

C语言 猜数游戏--产生一个随机数

#include <stdio.h> #include <time.h> #include <stdlib.h> int main(int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); int a,b,i; { srand((unsigned int)time(0)); b = rand()%100 + 1; // printf("