PAT_B_1040_Java(25分)
生活随笔
收集整理的這篇文章主要介紹了
PAT_B_1040_Java(25分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接找A,每個A前的P和后的T個數乘積,再加和,就是輸出的數了
//意料之中的超時了三個測試點 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {//輸入BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String str = bf.readLine();long sum = 0;//記錄PAT的個數for (int i = 0; i < str.length() - 1; i++) {//遍歷整個字符串if (str.charAt(i) == 'A') {//找到A的所有下標sum += P(str, i) * T(str, i);//用每個A的PAT組合加和}continue;}System.out.println(sum % 1000000007);//由于結果可能比較大,只輸出對 1000000007 取余數的結果}public static long P(String str, int a) {//計算下標a之前“P”的個數long P = 0;//記錄P的個數for (int i = 0; i < a; i++) {if (str.charAt(i) == 'P') {P++;}continue;}return P;}public static long T(String str, int a) {//計算下標a之后“T”的個數long T = 0;//記錄T的個數for (int i = str.length() - 1; i > a; i--) {if (str.charAt(i) == 'T') {T++;}continue;}return T;}}繼續修改:
//25分 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {//輸入BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String str = bf.readLine();int num_P = 0, num_T = 0;long sum = 0;//記錄PAT的個數int a[] = new int[str.length()];for (int i = 0; i < str.length(); i++) {if (str.charAt(i) == 'P') {num_P++;} else if (str.charAt(i) == 'A') {a[i] = num_P;// 將當前A前面的P的個數保存}}for (int i = str.length() - 1; i >= 0; i--) {// 統計每個A后面T的個數if (str.charAt(i) == 'T') {num_T++;} else if (str.charAt(i) == 'A') {sum += a[i] * num_T;// 當前A前面的P的個數×當前A后面的T的個數}}System.out.println(sum % 1000000007);//由于結果可能比較大,只輸出對 1000000007 取余數的結果} }相同思想-不同寫法:
import java.io.BufferedReader; import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception{BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));char[] c = bf.readLine().toCharArray();bf.close();int pat=0,at=0,t=0;for(int i=c.length-1;i>=0;i--) {if(c[i]=='T')t++;else if(c[i]=='A')at=(t+at)%1000000007;else pat=(pat+at)%1000000007;}System.out.print(pat);} }總結
以上是生活随笔為你收集整理的PAT_B_1040_Java(25分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天猫极速退款怎么用 天猫极速退款介绍
- 下一篇: Linux中rz命令使用方法