有机物燃烧的化学方程式配平(洛谷P1994题题解,Java语言描述)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                有机物燃烧的化学方程式配平(洛谷P1994题题解,Java语言描述)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                題目要求
P1994題目鏈接
 
分析
我太菜了,虧得我高中時(shí)期還虐(or被虐)生化,如今多年過去竟然沒分析出來坑點(diǎn),我太菜了。
我開始盲目認(rèn)為“元素守恒”,所以對(duì)HHH原子數(shù)求和,
CxHyOzC_xH_yO_zCx?Hy?Oz?與氧氣反應(yīng)的化學(xué)方程式:
 CxHyOz+(x+y4?z2)+O2→xCO2+y2H2OC_xH_yO_z+(x+\frac{y}{4}-\frac{z}{2})+O_2→xCO_2+\frac{y}{2} H_2OCx?Hy?Oz?+(x+4y??2z?)+O2?→xCO2?+2y?H2?O
- y2\frac{y}{2}2y?要是個(gè)整數(shù),所以若yyy是個(gè)奇數(shù),那就要×2\times2×2。
- (x+y4?z2)(x+\frac{y}{4}-\frac{z}{2})(x+4y??2z?)是個(gè)整數(shù),因?yàn)?span id="ze8trgl8bvbq" class="katex--inline">xxx是個(gè)整數(shù),所以要求(y4?z2)(\frac{y}{4}-\frac{z}{2})(4y??2z?)是個(gè)整數(shù),若此式不為整數(shù),則繼續(xù)×2\times2×2,即可配平為全整數(shù)系數(shù)。
AC代碼(Java語言描述)
import java.util.Scanner;public class Main {private static int i = 0, c_counter = 0, h_counter = 0, o_counter = 0, temp = 0;private static char[] formula;private static int count() {int counter = 0;while (++i < formula.length && Character.isDigit(formula[i])) {temp *= 10;temp += formula[i]-'0';}if (temp == 0) {counter++;} else {counter += temp;temp = 0;}return counter;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);formula = scanner.nextLine().toCharArray();scanner.close();for ( ; i < formula.length; ) {switch (formula[i]) {case 'C':c_counter += count();break;case 'H':h_counter += count();break;default:o_counter += count();}}while ((h_counter & 1) != 0 || (h_counter - 2*o_counter) % 4 != 0) {c_counter <<= 1;h_counter <<= 1;o_counter <<= 1;}System.out.println(c_counter + " " + h_counter/2);}}總結(jié)
以上是生活随笔為你收集整理的有机物燃烧的化学方程式配平(洛谷P1994题题解,Java语言描述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【Groovy】Groovyc: Int
- 下一篇: 【Python】可视化神经网络训练过程时
