奶牛在数学课上学习了整除的概念。农夫Farmer John为了考验它的数学水平,于是在白纸上写了正整数T。由于农夫不喜欢数字0,所以正整数T是不含数字0的。奶牛可以删除T的若干位数字,剩下来的数字从左到右构成一个正整数P,使得正整数P必须是5的倍数。奶牛有多少种不同的删除方案?具体请看样例解释。
输入
第一行,一个正整数T。
输出
一个整数,奶牛不同的删除方案数。
1、奶牛可以删除0个数字(即不删除任何数字)。
2、奶牛不能把T全部删除掉。即至少要剩下1位数字。
3、由于T的位数可能较长,建议用字符串形式读入。
样例输入 Copy
1256
样例输出 Copy
4
提示
奶牛有4种不同的删除方案:
第1种方案:删除T的第四位数字,剩下的P=125,是5的倍数。
第2种方案:删除T的第一位和第四位数字,剩下的P=25,是5的倍数。
第3种方案:删除T的第二位和第四位数字,剩下的P=15,是5的倍数。
第4种方案:删除T的第一位、第二位、第四位数字,剩下的P=5,是5的倍数。
解题思路:数字中5 后面的数都要删除,而5前面的数每多一位就多了一种组合方式。
Code:
#include <iostream>
#include <stdio.h>
using namespace std;
const int N = 100010;
typedef long long LL;
string s;
LL a[N], ans;
signed main()
{
cin >> s;
a[0] = 1;
for(int i = 1; i <= 80; i ++ ) a[i] = a[i - 1] * 2;
for(int i = s.size() - 1; i >= 0; i -- )
{
if(s[i] == '5')
{
ans += a[i];
}
}
cout << ans << endl;
}
582

被折叠的 条评论
为什么被折叠?



