題目
1、熊怪吃核桃
森林里有一只熊怪,很愛(ài)吃核桃。不過(guò)它有個(gè)習(xí)慣,每次都把找到的核桃分成相等的兩份,吃掉一份,留一份。如果不能等分,熊怪就會(huì)扔掉一個(gè)核桃再分。第二天再繼續(xù)這個(gè)過(guò)程,直到最后剩一個(gè)核桃了,直接丟掉。
有一天,熊怪發(fā)現(xiàn)了1543個(gè)核桃,請(qǐng)問(wèn),它在吃這些核桃的過(guò)程中,一共要丟掉多少個(gè)核桃。
請(qǐng)?zhí)顚?xiě)該數(shù)字(一個(gè)整數(shù)),不要填寫(xiě)任何多余的內(nèi)容或說(shuō)明文字。
/**
* Created by junyi.pc on 2017/1/25.
*/
public class Main {
public static void main(String[] args){
int number=0;
int sum=1543;
while (sum!=0){
if (sum%2==1){
number++;
sum=(sum-1)/2;
}
else{
sum=sum/2;
}
}
System.out.print(number);
}
}
運(yùn)行結(jié)果
C:\java\jdk1.8.0_25\bin\java -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\java\jdk1.8.0_25\jre\lib\charsets.jar;C:\java\jdk1.8.0_25\jre\lib\deploy.jar;C:\java\jdk1.8.0_25\jre\lib\ext\access-bridge-64.jar;C:\java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\java\jdk1.8.0_25\jre\lib\javaws.jar;C:\java\jdk1.8.0_25\jre\lib\jce.jar;C:\java\jdk1.8.0_25\jre\lib\jfr.jar;C:\java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\java\jdk1.8.0_25\jre\lib\jsse.jar;C:\java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\java\jdk1.8.0_25\jre\lib\plugin.jar;C:\java\jdk1.8.0_25\jre\lib\resources.jar;C:\java\jdk1.8.0_25\jre\lib\rt.jar;C:\Users\junyi.pc\Desktop\client\out\production\client;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
5
Process finished with exit code 0
2、星系炸彈
在X星系的廣袤空間中漂浮著許多X星人造“炸彈”,用來(lái)作為宇宙中的路標(biāo)。
每個(gè)炸彈都可以設(shè)定多少天之后爆炸。
比如:阿爾法炸彈2015年1月1日放置,定時(shí)為15天,則它在2015年1月16日爆炸。
有一個(gè)貝塔炸彈,2014年11月9日放置,定時(shí)為1000天,請(qǐng)你計(jì)算它爆炸的準(zhǔn)確日期。
請(qǐng)?zhí)顚?xiě)該日期,格式為 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
請(qǐng)嚴(yán)格按照格式書(shū)寫(xiě)。不能出現(xiàn)其它文字或符號(hào)。
/**
* Created by junyi.pc on 2017/1/25.
*/
import java.util.Calendar;
public class Main {
public static void main(String[] args){
Calendar calendar=Calendar.getInstance();
calendar.set(2014,10,9);
calendar.add(Calendar.DAY_OF_YEAR,1000);
System.out.println(calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DATE));
}
}
運(yùn)行結(jié)果
C:\java\jdk1.8.0_25\bin\java -Didea.launcher.port=7533 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\java\jdk1.8.0_25\jre\lib\charsets.jar;C:\java\jdk1.8.0_25\jre\lib\deploy.jar;C:\java\jdk1.8.0_25\jre\lib\ext\access-bridge-64.jar;C:\java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\java\jdk1.8.0_25\jre\lib\javaws.jar;C:\java\jdk1.8.0_25\jre\lib\jce.jar;C:\java\jdk1.8.0_25\jre\lib\jfr.jar;C:\java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\java\jdk1.8.0_25\jre\lib\jsse.jar;C:\java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\java\jdk1.8.0_25\jre\lib\plugin.jar;C:\java\jdk1.8.0_25\jre\lib\resources.jar;C:\java\jdk1.8.0_25\jre\lib\rt.jar;C:\Users\junyi.pc\Desktop\client\out\production\client;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
2017-7-5
Process finished with exit code 0
3、循環(huán)節(jié)長(zhǎng)度
兩個(gè)整數(shù)做除法,有時(shí)會(huì)產(chǎn)生循環(huán)小數(shù),其循環(huán)部分稱為:循環(huán)節(jié)。
比如,11/13=6=>0.846153846153..... 其循環(huán)節(jié)為[846153] 共有6位。
下面的方法,可以求出循環(huán)節(jié)的長(zhǎng)度。
請(qǐng)仔細(xì)閱讀代碼,并填寫(xiě)劃線部分缺少的代碼。
public static int f(int n, int m)
{
n = n % m;
Vector v = newVector();
for(;;)
{
v.add(n);
n *= 10;
n = n % m;
if(n==0) return 0;
if(v.indexOf(n)>=0) _________________________________ ; //填空
}
}
答案:return v.size()
解釋一下這段代碼
Vector
Vector類實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)數(shù)組。和ArrayList和相似,但是兩者是不同的:
Vector是同步訪問(wèn)的。
Vector包含了許多傳統(tǒng)的方法,這些方法不屬于集合框架。
Vector主要用在事先不知道數(shù)組的大小,或者只是需要一個(gè)可以改變大小的數(shù)組的情況。
Vector類支持4種構(gòu)造方法。
第一種構(gòu)造方法創(chuàng)建一個(gè)默認(rèn)的向量,默認(rèn)大小為10:
v.indexOf(n)
意思是在動(dòng)態(tài)數(shù)組vector中找到n,并且返回該索引,未找到則返回 -1
所以只要找到這個(gè)值就說(shuō)明循環(huán)開(kāi)始了...
每次如果沒(méi)找到V數(shù)組都添加一個(gè)元素,找到的時(shí)候只需要返回?cái)?shù)組大小 return v.size()即可
4、打印菱形(此題菱形有問(wèn)題,先忽略)
給出菱形的邊長(zhǎng),在控制臺(tái)上打印出一個(gè)菱形來(lái)。
為了便于比對(duì)空格,我們把空格用句點(diǎn)代替。
當(dāng)邊長(zhǎng)為8時(shí),菱形為:
.......*
.......
........
.........
..........
...........
............
.............
............
...........
..........
.........
........
.......
.......*
public class A
{
public static void f(int n)
{
String s ="*";
for(int i=0;i<2*n-3; i++) s += ".";
s +="*";
String s1 = s +"\n";
String s2 ="";
for(int i=0;i<n-1; i++){
//System.out.println("=>"+s);
s = "." +_____________________________________ + "*"; //填空
s1 = s + "\n" + s1;
s2 += s + "\n";
}
System.out.println(s1+s2);
}
public static void main(String[] args)
{
f(8);
}
}
答案:s = "." + ".............".substring(0,i) + new String(new char[]{''},0,n-2-i>0?1:0)+".............".substring(0,2(n-2-i)-1>0?2(n-2-i)-1:0) + "";
5、 字符排序
算法是這樣的,如果給定N個(gè)不同字符,將這N個(gè)字符全排列,最終的結(jié)果將會(huì)是N!種。如:給定 A、B、C三個(gè)不同的字符,則結(jié)果為:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6種情況。
/**
* Created by junyi.pc on 2017/1/25.
*/
import java.util.Calendar;
import java.util.Scanner;
import java.util.Vector;
class question{
public static long count=0;
public void fullPermutation(Vector<Character> sourse, Vector<Character> result) {
System.out.print(sourse.size());
System.out.print("\n");
if(sourse.size()==0){
for (int i = 0; i < result.size(); i++) {
System.out.print(result.elementAt(i));
}
System.out.print("\n");
count++;
return;
}
for (int i = 0; i < sourse.size(); i++) {
Vector<Character>tsourse=new Vector<Character>(sourse);
Vector<Character>tresult=new Vector<Character>(result);
tresult.add(sourse.elementAt(i));
tsourse.remove(i);
new question().fullPermutation(tsourse,tresult);
}
}
}
public class Main {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
Vector<Character> sourse=new Vector<Character>();
Vector<Character> result=new Vector<Character>();
for(int i=0;i<n;i++){
sourse.add((char)('A'+i));//將字母存到動(dòng)態(tài)數(shù)組里
}
new question().fullPermutation(sourse,result);
System.out.println(question.count);//打印出總共個(gè)數(shù)
}
}
解釋一下上邊代碼思路:
比如當(dāng)n=3的時(shí)候
初始化source=ABC
result=null
當(dāng)i=0時(shí),source=BC (1)
result=A
進(jìn)入遞歸再次執(zhí)行相同的過(guò)程
當(dāng)i=0時(shí),source=C (2)
result=AB
進(jìn)入遞歸再次執(zhí)行相同的過(guò)程
當(dāng)i=0時(shí),source=null
result=ABC
當(dāng)source.size=0時(shí),打印出ABC
當(dāng)執(zhí)行上邊(2)時(shí),i=1時(shí)
source=B
result=AC
進(jìn)入遞歸再次執(zhí)行相同的過(guò)程
當(dāng)i=0時(shí),source=null
result=ACB
當(dāng)source.size=0時(shí),打印出ACB
當(dāng)執(zhí)行上邊(1)時(shí),i=1時(shí)....重復(fù)步驟
運(yùn)行結(jié)果
C:\java\jdk1.8.0_25\bin\java -Didea.launcher.port=7540 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\java\jdk1.8.0_25\jre\lib\charsets.jar;C:\java\jdk1.8.0_25\jre\lib\deploy.jar;C:\java\jdk1.8.0_25\jre\lib\ext\access-bridge-64.jar;C:\java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\java\jdk1.8.0_25\jre\lib\javaws.jar;C:\java\jdk1.8.0_25\jre\lib\jce.jar;C:\java\jdk1.8.0_25\jre\lib\jfr.jar;C:\java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\java\jdk1.8.0_25\jre\lib\jsse.jar;C:\java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\java\jdk1.8.0_25\jre\lib\plugin.jar;C:\java\jdk1.8.0_25\jre\lib\resources.jar;C:\java\jdk1.8.0_25\jre\lib\rt.jar;C:\Users\junyi.pc\Desktop\client\out\production\client;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
3
ABC
ACB
BAC
BCA
CAB
CBA
6
Process finished with exit code 0