计蒜客 2018 蓝桥杯省赛 B 组模拟赛(一)-C. 结果填空:U型数字

本文介绍了蒜头君对U型数字的定义,即数字严格单调递减后单调递增。讨论了如何确定[1,100000]区间内U型数字的数量,答案为8193。提醒读者在解题时要注意细节,避免因粗心导致错误。" 125236811,14347128,NEAR公链详解:分片技术与高性价比投资分析,"['公链', '区块链技术', '加密货币', '分片', '投资策略']
摘要由CSDN通过智能技术生成

最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增。比如 212212 就是一个U型数字,但是 33333398985675673131331313,就是不是U型数字。

现在蒜头君问你,[1,100000][1,100000] 有多少U型数字?

题目链接:点击打开链接


分析:

答案是8193,这题看着很简单,但是只要粗心手误,考虑不周,便会错掉,之所以记录,是给自己一个警示,如果是正真的比赛,恐怕就要错得傻了,第一遍错的是因为判断结果是否加一的时候,没有并上 bj1 和 bj2 都做标记的情况,要细心哇。。

#include<stdio.h>
#include<string.h>

int main()
{
	int num=0;
	int s[10];
	for(int i=100;i<=100000;i++)
	{
		memset(s,0,sizeof(s));///每轮都要重置
		int n=i;
		int j=0;
		while(n) ///将该数分解存放在数组中
		{
			s[j++]=n%10;
			n/=10;
		}
		int bj1=0,bj2=0,bj3=0;///用来做标记,方便判断
		for(int k=1;k<j;k++)
		{
			if((s[k]<s[k-1])&&bj2==0)///在没有递增的情况下先递减
				bj1=1;
			else if(s[k]>s[k-1]&&bj1==1)///在已经递减的情况下递增
				bj2=1;
			else///一旦有不满足条件的,证明该数不是U型数
				bj3=1;
		}
		if(bj3==0&&bj1==1&&bj2==1)///这里千万要小心,不能写漏,三个条件都符合才是U型数
			num++;
	}
	printf("%d\n",num);
	return 0;
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值