题意 :
- 给一数,问最少去掉几位使得它能被25整除
思路 :
- 由于25的倍数最后两位只能是00,25,50,75,所以暴力枚举最后两位的值,取应去掉的个数(包括i的之后的整个串减去i和j)的最小值
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <unordered_set>
#include <set>
#include <vector>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int _;
cin >> _;
while (_ -- )
{
ll n;
cin >> n;
string s = to_string(n);
int mi = 1e9;
for (int i = 0; i < s.size(); i ++ )
for (int j = i + 1; j < s.size(); j ++ )
{
int num = (s[i] - '0') * 10 + (s[j] - '0');
if (num % 25 == 0)
mi = min(mi, (int)s.size() - i - 2);
}
cout << mi << endl;
}
return 0;
}