zoukankan      html  css  js  c++  java
  • UVa 1586

           这道题一看感觉挺难,因为描述文字长篇大论,仔细读一读其实就是求相对分子质量。字符串处理。不过先来想偷懒用正则表达式,但是想了半天没有什么太好的方法。于是用普通的方法AC了。如果有大神有正则表达式的好方法留言一下,我也好学习学习。

    import java.util.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Main1586 {
    
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		int n = scan.nextInt();
    		while(n-- > 0) {
    			String str = scan.next();
    			double mass = 0;
    			for(int i=0; i<str.length(); i++) {
    				char ch = str.charAt(i);
    				if(ch>='C' && ch<='O') {
    					if(ch == 'C') {
    						int cnt = 0;
    						int flag = 0;
    						for(int j=i+1; j<str.length(); j++) {
    							if(str.charAt(j)>='0' && str.charAt(j)<='9') {
    								cnt = cnt * 10 + (int)(str.charAt(j) - '0');
    								flag ++;
    							}
    							else break;
    						}
    						if(flag != 0)
    						    mass += (double)cnt * 12.01;
    						else
    							mass += 12.01;
    					}
    					if(ch == 'H') {
    						int cnt = 0;
    						int flag = 0;
    						for(int j=i+1; j<str.length(); j++) {
    							if(str.charAt(j)>='0' && str.charAt(j)<='9') {
    								cnt = cnt * 10 + (int)(str.charAt(j) - '0');
    								flag ++;
    							}
    							else break;
    						}
    						if(flag != 0)
    						    mass += (double)cnt * 1.008;
    						else
    							mass += 1.008;
    					}
    					if(ch == 'O') {
    						int cnt = 0;
    						int flag = 0;
    						for(int j=i+1; j<str.length(); j++) {
    							if(str.charAt(j)>='0' && str.charAt(j)<='9') {
    								cnt = cnt * 10 + (int)(str.charAt(j) - '0');
    								flag ++;
    							}
    							else break;
    						}
    						if(flag != 0)
    						    mass += (double)cnt * 16.00;
    						else
    							mass += 16.00;
    					}
    					if(ch == 'N') {
    						int cnt = 0;
    						int flag = 0;
    						for(int j=i+1; j<str.length(); j++) {
    							if(str.charAt(j)>='0' && str.charAt(j)<='9') {
    								cnt = cnt * 10 + (int)(str.charAt(j) - '0');
    								flag ++;
    							}
    							else break;
    							
    						}
    						if(flag != 0)
    						    mass += (double)cnt * 14.01;
    						else
    							mass += 14.01;
    					}
    				}
    			}
    			System.out.printf("%.3f
    ", mass);
    		
    		}
    
    	}
    
    }
    
  • 相关阅读:
    安装Oracle 11g时遇到“【INS-13001】此环境不满足最低配置”的问题解决
    Oracle 11g安装过程
    关于.ipynb文件
    Mysql连接驱动与Java之间的版本不匹配问题(Mysql-connector-java与Java、Mysql版本对应关系)
    Markdown基础语法
    华为2019开发者大会内容小记
    Python开发:NumPy学习(一)ndarray数组
    POJ 1011 -- Sticks
    POJ 2362 -- Square
    POJ 3414 -- Pots
  • 原文地址:https://www.cnblogs.com/wxisme/p/4363743.html
Copyright © 2011-2022 走看看