zoukankan      html  css  js  c++  java
  • Codeforces 988E. Divisibility by 25

    解题思路:

    1. 只有尾数为25,50,75,00的数才可能是25的倍数。

    2. 对字符串做4次处理,以25为例。

      a. 将字符串中的最后一个5移到最后一位。计算交换次数。(如果没有找到5,则不可能凑出25,考虑50、75、00)
      b. 字符串已经改变,将此时最后一个2移到倒数第二位。计算交换次数。 (如果没有找到2,则也不可能凑出25,考虑50、75、00)
      c. 将除了最后两位之外的第一个非0的数字移到首位,计算交换次数。(如果找不到除了最后两位之外的非0数字,则不可能凑出25,考虑50、75、00)

    注意:

    我的WA点:

    输入25
    输出0

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int solve(string s, char c1, char c2){
    //	cout << s << endl;
    	int len = s.length()-1;
    	int ans = 0;
    	int flag = false;
    	for(int i = 0;s[i]; ++i){
    		if(s[i] == c2){
    			flag = true;
    			for(int j = i;j > 0; j--){
    				swap(s[j],s[j-1]);
    				ans++;
    			}
    			break;
    		}
    	}
    //	cout << ans << endl;
    	if(!flag) return -1;
    	flag = false;
    	for(int i = 1;s[i]; ++i){
    		if(s[i] == c1){
    			flag = true;
    			for(int j = i;j > 1; j--){
    				swap(s[j],s[j-1]);
    				ans++;
    			}
    			break;
    		}
    	}
    	if(!flag) return -1;
    	if(len == 1) return ans;
    	int con = -1;
    	for(int i = len;i > 1; --i){
    		if(s[i] != '0'){
    			con = i;
    			break;
    		}
    	}
    	if(con == -1){
    		return -1;
    	}else{
    		return ans+len-con;
    	}
    }
    
    int main(){
    	ios::sync_with_stdio(false);
    	string s;
    	while(cin >> s){
    		reverse(s.begin(), s.end());
    		int ans = INT_MAX;
    		int t;
    		t = solve(s, '2', '5');
    	//	cout << t << endl;
    		if(t != -1){
    			ans = min(ans, t);
    		}
    		t = solve(s, '5', '0');	//	cout << t << endl;
    		if(t != -1){
    			ans = min(ans, t);
    		}
    		t = solve(s, '7', '5');	//	cout << t << endl;
    		if(t != -1){
    			ans = min(ans, t);
    		}
    		t = solve(s, '0', '0');	//	cout << t << endl;
    		if(t != -1){
    			ans = min(ans, t);
    		}
    		if(ans == INT_MAX) ans = -1;
    		cout << ans << endl;
    	} 
        return 0;
    }
    
  • 相关阅读:
    解决VSCode黑屏和终端空白无法输入的问题
    source map文件还原
    npm下载很慢的解决办法
    清理sqlserver2014的日志
    浏览器横向打印
    Vue3 diff的最长递增子序列 算法详解
    白话科普系列——网站靠什么提升加载速度?
    微服务架构下 CI/CD 如何落地
    网骗欺诈?网络裸奔?都是因为 HTTP?
    有赞统一接入层架构演进
  • 原文地址:https://www.cnblogs.com/zhangjiuding/p/9189127.html
Copyright © 2011-2022 走看看