更小的数


提交答案

分数: 3
时间限制: 1.0s
内存限制: 64M

作者:
题目类型
允许的语言
C++, Java

问题描述

杨达衡有一个长度均为 n 且仅由数字字符0∼9 组成的字符串,下标从0 到n−1,
你可以将其视作是一个具有n 位的十进制数字num,杨达衡可以从num 中选出一段连续的子串并将子串进行反转,最多反转一次。杨达衡想要将选出的子串进行反转后再放入原位置处得到的新的数字num2,
满足条件num2<num,请你帮他计算下一共有多少种不同的子串选择方案,只要两个子串在num 中的位置不完全相同我们就视作是不同的方案。
注意,我们允许前导零的存在,即数字的最高位可以是 0,这是合法的。例如:
num 为 00789601, 选取下标2到下标4的子串进行反转,则可得到
num2为 00987601

输入格式

输入一行包含一个长度为 n 的字符串表示num(仅包含数字字符0∼9),从左至右下标依次为0∼n−1。

输出格式

输出一行包含一个整数表示答案。

样例输入

210102

样例输出

8

样例说明

一共有 8 种不同的方案:
所选择的子串下标为0到1,反转后120102<210102
所选择的子串下标为0到2,反转后012102<210102
所选择的子串下标为0到3,反转后101202<210102
所选择的子串下标为0到4,反转后010122<210102
所选择的子串下标为0到5,反转后201012<210102
所选择的子串下标为1到2,反转后201102<210102
所选择的子串下标为1到4,反转后201012<210102
所选择的子串下标为3到4,反转后210012<210102


评论

目前没有评论。