码迷,mamicode.com
首页 > 其他好文 > 详细

2.2练习总结

时间:2018-02-02 23:17:28      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:import   body   显示   没有   xxxx   转换   ring   理解   sqrt   

  放假以来第一次做题,啊,真的菜。

  一共八道题,题目难度依次增加,前四个题很简单,争取都做一下(这是大佬的原话)然后开始做题,前两道题都很简单就不说了,第三题有点坑,自己逻辑出错了,再加上有个小知识点的遗忘,纪录一下吧。

        技术分享图片

        技术分享图片

  对,没错就是这个题,折腾了很久,这就是实力弱鸡!

就我自己的理解,首先是把输入的值存为两个字符串a,b ,然后进行字符拼接,完成了第一步。

接着把拼接的字符串转化成int型,因为这里说了a,b的范围【1,100】所以不用考虑BigInteger。这里就遇到了第一个问题,就是类型转换(这里我想用string转int),但是我忘了怎么转换了。。。只能用百度了,顺便也复习了这个点。

  技术分享图片

接下来,我觉得这题很稳了,判断是不是平方数就好了。快速写完了之后试了几个例子就提交了,but!!!样例没有全过。

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sc=new Scanner(System.in);
 6         String a=sc.next();
 7         String b=sc.next();
 8         String c=a+b;
 9         int bool=0;
10         int sum=Integer.parseInt(c);
11         
12         for(int i=1;i<=100;i++){
13             if(sum%i==0&&sum==i*i){
14                 bool=1;
15 } 16 } 17 18 if(bool==1){ 19 System.out.println("Yes"); 20 } 21 if(bool==0){ 22 System.out.println("No"); 23 } 24 } 25 }

 

这是我第一次写的代码,嗯,应该已经很明显了。但是我就是没有意识到那里有错,不服输的我又改了一个版本,从1到100循环a,b,然后拼接,再判断是不是平方数,我让他输出了ab的拼接数和yes or no其实这里已经能看出错误了,因为最后的大部分显示的都是xxxxx yes。但是我看见100100也写得yes,样例里有这个,我过了这个样例是no所以觉得是我程序写错了!!!啊,大坑,然后一直再改程序验证到底是那里的样例过不了。

然后我翻本子看到之前写的判断素数,发现,我循环的判断条件是Math.sqrt(n)!!!忽然发现了,我的逻辑出了漏洞啊,我当时想的是因为ab最大取100,那么ab最大就是100*100,天!蠢的无话可说了吧。忘了是拼接,再加上样例里的100100让我更坚信了(by the way,我坚信的是错的啊,100*100=10000啊)所以我取值去到100根本不全啊,最后用了Math.sqrt(sum)就全过了。

最后,再次吐槽自己的菜,我当时看见了Math.sqrt(sum)做判断条件就随手一提交(还在if(sum%i==0&&sum==i*i)里面加了break;和 else条件,因为我当时并没有意识到自己的错误)这次就过来。我一开始还以为是break 和else的问题,全做完后,重新提交有break else 没有改100的版本才发现原来是这个错误。

好了,好了,最后的代码:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sc=new Scanner(System.in);
 6         String a=sc.next();
 7         String b=sc.next();
 8         String c=a+b;
 9         int bool=0;
10         int sum=Integer.parseInt(c);
11         
12         for(int i=1;i<=Math.sqrt(sum);i++){
13             if(sum%i==0&&sum==i*i){
14                 bool=1;
15                 break;
16             }else{
17                 bool=0;
18             }
19         }
20         
21         if(bool==1){
22             System.out.println("Yes");
23         }
24         if(bool==0){
25             System.out.println("No");
26         }    
27     }
28 }

很简单的题,以后注意啊~~~

 

2.2练习总结

标签:import   body   显示   没有   xxxx   转换   ring   理解   sqrt   

原文地址:https://www.cnblogs.com/ShallByeBye/p/8407068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!