最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增。比如 212212212 就是一个U型数字,但是 333333333, 989898, 567567567, 313133131331313,就是不是U型数字。
现在蒜头君问你,[1,100000][1,100000][1,100000] 有多少U型数字?
提示:请不要输出多余的符号
#include<cstdio>
#include<cstring>
#include<algorithm>
#define bug(x) printf("%d****\n",x)
typedef long long ll;
using namespace std;
/*
当时不知道为什么非得弄个回文串,不知道脑子里在干什么
还有一个问题,这个数字都是倒的啊
*/
int num[10];
int check(int val){
int cnt=0,tmp=val;
while(val){
num[cnt++]=val%10;
val/=10;
}
//if(num[1]>=num[0]) return 0;//
int pos=0;
for(int i=1;i<cnt;i++){
if(num[i]<num[i-1]) continue;
else{
pos=i;
break;
}
}
if(!pos||pos==1) return 0;//如果是直接上去的,和直接下去的,都直接删掉
for(int i=pos;i<cnt;i++){
if(!(num[i]>num[i-1])) return 0;
}
return 1;
}
int main(){
freopen("123.txt","w",stdout);
int ans=0;
for(int i=100;i<100000;i++){
if(check(i)){
printf("%d\n",i);
ans++;
}
}
printf("%d\n",ans);
return 0;
}