DAY ONE_PAT乙级1002.写出这个数1003.我要通过

保持优良习惯day1

登录半小时还没登上蓝桥 学校的网越发没救了 
我选择PAT(乙级)

 
  
1002.写出这个数

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。

 
   
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:
 
   
1234567890987654321123456789
输出样例:
 
   
yi san wu

AC代码:
import java.util.Scanner;
public class Main {
 static int sum=0;
 public static void main(String[] args) {
  Scanner in=new Scanner(System.in);
  String n=in.next();
  for(int i=0;i 
       
总结:拿到题目第一时间想的是用java大数类的方法,反而写的很麻烦,实际上用String类型再转为数组更好做
思维太局限!!

1003.我要通过

 
    
答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“ 答案正确 ”的。

输入格式:每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

输入样例:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
输出样例:
 
    
YESYESYESYESNONONONO
思路:刚拿到题目其实没看懂第三个条件是什么意思,后来也看了网上其他大佬的解释加笔算才明白题目意思。
首先,题目的三个条件要都满足才算答案正确,然后我倒推了第三条件,它的意思是满足第三条件倒推以后可以转为第二条件的形式(第一次写 感觉表达不清晰)
举个栗子//题目给出的输入样例中的“AAPAATAAAA”是正确答案,将这个看为aPbATca形式,则a:AA b:A ca:AAAA 可以得到c:AA 因为题中第三条件得到aPbTc形式,即AAPATAA,满足了第二条件的xPATx形式,因此这个是正确答案。
再举个栗子//题中的输入样例中的“APAAATAA” 倒推后得到的形式是:APAATA->APAT 不满足xPATx的形式,所以是错误答案
综合分析以后我们可以得到结论:a中A的数量乘上b中A的数量等于c中A的数量 即a.length()*b.length()=c.length().
下面给出AC代码:
import java.util.Scanner;
public class PATbasic1003 {
 public static void main(String[] args) {
  Scanner in=new Scanner(System.in);
  int N=in.nextInt();
  in.nextLine();//取上一个next之后留下的回车
  String gets[]=new String[N];
  for(int i=0;i 
      
 }
 public static void judge(String s) {
  //首先判断条件一
  boolean P=true;
  boolean A=true;
  boolean T=true;
  for(int i=0;i 
     
备注:PAT中提交java代码是不可以有注释的 不然会编译错误

你可能感兴趣的:(算法)