『每日一题 2012-03-25』巧填数字

问题描述:

*问题分析与算法设计
问题本身并不复杂,可以对乘式中的每一位使用穷举法,最终可以得到结果。本题的关键在于怎样有效的判断每个部分积的每一位是否满足题意,这一问题处理不好,编写的程序会很长。程序实现中采用了一个判断函数,通过传入函数的标志字符串对所有的数进行统一的判断处理。

#include<stdio.h>
void print(long a,long b,long s1,long s2,long s3);
int jud(long q,char *pflag);
int main()
{
	long i,j,k,l,m,n,term,t1,t2,t3;
	int flag;
	for(i=0;i<=4;++i) /*被乘数的第一位*/
		for(j=5;j<=9;++j) /*被乘数的第二位*/
			for(k=0;k<=4;++k) /*被乘数的第三位*/
			{
				term=100*i+10*j+k; /*被乘数*/
				for(flag=0,n=0;n<4&&!flag;) /*乘数的第一位*/
					flag=jud((t3=++n*100*term)/100,"001"); /*判断第三个部分积*/
				if(flag)
				{
					for(flag=0,m=0;m<4&&!flag;) /*乘数的第二位*/
						flag=jud((t2=++m*10*term)/10,"1100"); /*判断第二个部分积*/
					if(flag)
					{
						for(flag=0,l=5;l<9&&!flag;) /*乘数的第三位*/
							flag=jud(t1=++l*term,"0000"); /*判断第一个部分积*/
						if(flag&&jud(t1+t2+t3,"00101")) /*判断乘式的积*/
							print(term,n*100+m*10+l,t1,t2,t3);
					}
				}
			}
}
void print(long a,long b,long s1,long s2,long s3) /*打印结果*/
{
	printf("\n %ld\n",a);
	printf("*) %ld\n",b);
	printf("………………….\n");
	printf(" %ld\n %ld\n %ld\n",s1,s2/10,s3/100);
	printf("………………….\n");
	printf(" %ld\n",a*b);
}
int jud(long q,char *pflag) /*判断一个数的每一位是否满足要求的判断函数*/
/*q:需要判断的数。pflag:标志字符串,A用1表示,Z用0表示。标志串排列顺序:个十百…*/
{
	while(q!=0&&*pflag!=NULL) /*循环判断对应位的取值范围是否正确*/
		if(*pflag-'0'!=(q%10>=5?1:0)) /*标志位与对应的位不符,返回0*/
			return 0;
		else
		{
			q/=10;++pflag; /*若相符则取下一位进行判断*/
		}
		if(q==0&&*pflag==NULL) /*q的位数与标志字符串的长度相同时,返回1*/
			return 1;
		else return 0;
}
时间: 2024-10-08 15:00:45

『每日一题 2012-03-25』巧填数字的相关文章

『每日一题 2012-04-17』巧排数字

问题描述: 将1,2,3,--,20这20个连续的自然数排成一圈,使任意两个相邻的自然数之和均为素数 强人的思路: 1 找出所有和为素数的数对 2 找Hamilton环 找所有和为素数的数对的方法: 1,2,3,--,20任意两数之和的最大值为39,可取40.故首先,我们找出1到40之间的所有素数,实现函数如下: int create_prime(int *a, int max)  // 找到  1 到 max 间的所有素数  {        int *x;     int i,j;    

『每日一题 2012-04-18』将真分数分解为埃及分数

问题描述: 分子为1的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数. 如:8/11=1/2+1/5+1/55+1/110. *问题分析与算法设计 若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a+1的埃及分数.用这种方法将剩余部分反复分解,最后可得到结果. #include<stdio.h> int main(void) { long int a,b,c; printf("Plea

“济南车管”中新辟“每日一题”栏目

本报7月8日讯(记者王若松)"学习时间又到了,亲们答对了么?"近日,济南市车管所在其http://www.aliyun.com/zixun/aggregation/1144.html">腾讯微博"济南车管"中新辟"每日一题"栏目,通过微博的形式帮助广大车主及驾考人员随时随地加强道路交通理论学习,强化安全出行意识. 记者了解到,"每日一题"中的所有题目均出自最新的驾考理论考试题库,供博友们学习参考.

Tine 2.0 Milan (2012/03) Build 1发布 Web群组软件

Tine 是一个基于Web的群组软件解决方案,主要侧重于群组软件的实用性和正确性.为了实现这些目标,该软件采用了基于网络的持久性优化协作和涵盖了大部分的单元测试代码.其功能包含:支持联系人,任务事件,日历,电子邮件,http://www.aliyun.com/zixun/aggregation/8856.html">客户关系管理,网络电话,时间跟踪器,ActiveSync,以及灵活的权限管理系统,等等. Tine 2.0 Milan (2012/03) Build 1该版本有许多新功能和改

借题“2012搞笑诺贝尔奖” 解读网站优化中的几点疑惑

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 2012搞笑诺贝尔奖颁发了很多有意思的奖项,这些奖项看似无聊无趣甚至无厘头,但是它的一些观点却起我的思考,这些思考和奖项本身无关,只是给了我一些启迪,通过这些思绪,让我感觉到,作为一名草根站长,要想成功就要解放思想.遇到不解的问题,不要急着否定,说不定那是个提升自己能力的机会!下面的分析和奖项内容无关,意在引题. 换个角度思考,或许就能找到突

IBM WebSphere Application Server V7.0 Fix Pack 9于2010.03.25发布

IBM WebSphere Application Server V6.1 Fix Pack 29于2010.01.18发布  各个平台下载,请见: ftp://ftp.software.ibm.com/software/websphere/appserv/support/fixpacks/was70/cumulative/cf7009/ UpdateInstaller下载,请见:ftp://ftp.software.ibm.com/software/websphere/appserv/supp

25个巧用字体排版帅气的优秀网页设计

  虽然排版是网页设计 中极为重要的组成部分,但是绝大多数的网站并未在排版上做过专门的设计和调整. 事实上,在我看来我们日常访问的许多网站在排版设计上并无亮点,这也是为什么,当我们发现这些在排版设计上用心雕琢的网站的时候,会由衷地感受到喜悦和别样的幸福感. 如果你厌倦了无处不在的宋体.雅黑.Arial和Helventica,那么你应该会喜欢接下来的案例,这些巧用字体排版帅气的优秀网站会再次扩充你的网页收藏夹. 1. V02 Group 雅致的文字排版悬浮在半空中,和背景融为一体,这种设计除了众所

OJ题:输入一个多位的数字,求各数位相加。

题目内容: 输入一个多位的数字,1求各数位相加. 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一个整数 输出格式: 一个整数 输入样例: 1234567890 输出样例: 45 时间限制:500ms内存限制:32000kb 实现程序: #include <stdio.h> #include <stdlib.h> #include <string.h> int cnt_count(int value) { int count = 0 , cnt = 0

session,application,cookie,viewstate,Querystring等的作用域

Session:存放于服务器,生命周期根据不同的设置而定.默认是20分钟,可以设置成无限期.主要根据客户端传递过来的SessionID来区分不同的对话.至于SessionID如何传递.目前绝大部分是只用Cookie,少部分使用url,极少部分使用表单元素.总之从客户端传递到服务器即可. application:服务器应用程序,这个的生命周期是根据应用程序进程来决定的.IIS5以前基本上是当前进程,IIS5之后是根据进程池而定.只要这些停了那么就消失了,否则就一直存在. cookie:这个是存放的