给定一个正整数 n,请判断 n 的所有数位上的值是否从左到右是严格递增的。
例如:1589 是严格递增的。
再如:1336 不是严格递增的,中间有相同的 3。
再如:1598 不是严格递增的。
输入格式
输入一行包含一个整数 n。
输出格式
如果是严格递增的,输出“YES”(全大写),否则输出“NO”(全大写)。
样例输入
1589
样例输出
YES
样例输入
1336
样例输出
NO
评测用例规模与约定
对于所有评测用例,1 <= n <= 1000000000。
#include <iostream>
using namespace std;
int main(void)
{
long n;
cin >> n;
int last = -1;
int curr = 0;
bool flag = true;
while (n > 0 && flag) {
if (last == -1) {
last = n % 10;
} else {
curr = n % 10;
if (curr >= last) {
flag = false;
}
last = curr;
}
n /= 10;
}
cout << (flag ? "YES" : "NO") << endl;
return 0;
}
利用相除和取模先求出每一位,再比较。
#include<stdio.h>
#include<string.h>
using namespace std;
int main() {
char arrs[10];
bool flag = false;
scanf("%s", arrs);
for (int i = 0; i < strlen(arrs)-1; i++) {
if (arrs[i] < arrs[i+1]) {
continue;
}
else {
flag = true;
break;
}
}
if (flag) {
printf("NO");
}
else {
printf("YES");
}
}
可以利用字符串性质。