網(wǎng)站運(yùn)維是做什么的所有關(guān)鍵詞
Unity3D特效百例 | 案例項(xiàng)目實(shí)戰(zhàn)源碼 | Android-Unity實(shí)戰(zhàn)問(wèn)題匯總 |
---|---|---|
游戲腳本-輔助自動(dòng)化 | Android控件全解手冊(cè) | 再戰(zhàn)Android系列 |
Scratch編程案例 | 軟考全系列 | Unity3D學(xué)習(xí)專欄 |
藍(lán)橋系列 | ChatGPT和AIGC |
👉關(guān)于作者
專注于Android/Unity和各種游戲開(kāi)發(fā)技巧,以及各種資源分享(網(wǎng)站、工具、素材、源碼、游戲等)
有什么需要?dú)g迎底部卡片私我,獲取更多支持,交流讓學(xué)習(xí)不再孤單。
👉實(shí)踐過(guò)程
😜古代賭局
俗話說(shuō):十賭九輸。因?yàn)榇蠖鄶?shù)賭局的背后都藏有陰謀。不過(guò)也不盡然,有些賭局背后藏有的是:“陽(yáng)謀”。
有一種賭局是這樣的:桌子上放六個(gè)匣子,編號(hào)是1至6。多位參與者(以下稱玩家)可以把任意數(shù)量的錢押在某個(gè)編號(hào)的匣子上。
所有玩家都下注后,莊家同時(shí)擲出3個(gè)骰子(骰子上的數(shù)字都是1至6)。輸贏規(guī)則如下:
- 若某一個(gè)骰子上的數(shù)字與玩家所押注的匣子號(hào)相同,則玩家拿回自己的押注,莊家按他押注的數(shù)目賠付(即1比1的賠率)。
- 若有兩個(gè)骰子上的數(shù)字與玩家所押注的匣子號(hào)相同,則玩家拿回自己的押注,莊家按他押注的數(shù)目的2倍賠付(即1比2的賠率)。
- 若三個(gè)骰子上的數(shù)字都與玩家所押注的匣子號(hào)相同,則玩家拿回自己的押注,莊家按他押注的數(shù)目的6倍賠付(即1比6的賠率)。
- 若玩家所押注匣子號(hào)與某個(gè)骰子示數(shù)乘積等于另外兩個(gè)骰子示數(shù)的乘積,則玩家拿回自己的押注,莊家也不賠付(流局)。
- 若以上規(guī)則有同時(shí)滿足者,玩家可以選擇對(duì)自己最有利的規(guī)則。規(guī)則執(zhí)行后,則莊家收獲所有匣子上剩余的押注。
乍一看起來(lái),好像規(guī)則對(duì)玩家有利,莊家吃虧。但經(jīng)過(guò)大量實(shí)戰(zhàn),會(huì)發(fā)現(xiàn)局面很難說(shuō),于是懷疑是否莊家做了手腳,
莊家則十分爽快地說(shuō):可以由玩家提供骰子,甚至也可以由玩家來(lái)投擲骰子。
你的任務(wù)是:通過(guò)編程模擬該過(guò)程。模擬50萬(wàn)次,假定只有1個(gè)玩家,他每次的押注都是1元錢,其押注的匣子號(hào)是隨機(jī)的。
再假定莊家有足夠的資金用于賠付。最后計(jì)算出莊家的盈率(莊家盈利金額/押注總金額)。
【輸入、輸出格式要求】
程序無(wú)輸入,程序運(yùn)行輸出莊家的盈率,四舍五入保留到小數(shù)后3位。
【注意】
請(qǐng)仔細(xì)調(diào)試!您的程序只有能運(yùn)行出正確結(jié)果的時(shí)候才有機(jī)會(huì)得分!
請(qǐng)把所有類寫在同一個(gè)文件中,調(diào)試好后,存入與【考生文件夾】下對(duì)應(yīng)題號(hào)的“解答.txt”中即可。
相關(guān)的工程文件不要拷入。
請(qǐng)不要使用package語(yǔ)句。
源程序中只能出現(xiàn)JDK1.5中允許的語(yǔ)法或調(diào)用。不能使用1.6或更高版本。
package Question10_19;
importjava.util.Scanner;
publicclass Question14 {publicstaticvoid main(String[] args) {int a,b,c,d,sum = 0;for (int i = 0; i < 500000; i++) {a=(int) (Math.random()*6)+1;b=(int) (Math.random()*6)+1;c=(int) (Math.random()*6)+1;d=(int) (Math.random()*6)+1;// System.out.println(a+" "+b+" "+c+" "+d);if(a==b&&a==c&&a==d){sum-=6;}elseif((a==b&&a==c)||(a==c&&a==d)||(a==b&&a==d)){sum-=2;}elseif(a==b||a==c||a==d){sum-=1;}elseif ((a*b==c*d)||(a*c==b*d)||(a*d==b*c)) {sum-=0;}else {sum+=1;}}System.out.printf("%.3f",sum/500000f);}
}
程序輸出:
0.021
import java.math.BigDecimal;
public class Demo04 { static int sum = 0; // 莊家總錢數(shù) public static void f(int m,int n,int a,int b,int c){ if(n==a&&n==b&&n==c){ sum -= 6*m; }else if(n==a&&n==b||n==a&&n==c||n==b&&n==c){ sum -= 2*m; }else if(n==a||n==b||n==c){ sum -= m; }else if(!(n*a==b*c||n*b==a*c||n*c==a*b)){ sum += m; } } public static void main(String[] args) throws Exception{ int m = 1; // 押注都是1元錢 int n; // 押注匣子號(hào) int a; // 第一個(gè)骰子 int b; // 第二個(gè)骰子 int c; // 第三個(gè)骰子 for(int i=0;i<500000;i++){ n = (int)(Math.random()*6+1); a = (int)(Math.random()*6+1); b = (int)(Math.random()*6+1); c = (int)(Math.random()*6+1); f(m,n,a,b,c); }
// float f = (new BigDecimal(sum).divide(new BigDecimal(500000),
// 3,BigDecimal.ROUND_HALF_UP)).floatValue();
// System.out.println(f); double d = sum/500000f; System.out.printf("%.3f\n",d); }
} 運(yùn)行結(jié)果:
0.025結(jié)果2:
0.022 結(jié)果3:
0.024
.....
😜古堡算式
福爾摩斯到某古堡探險(xiǎn),看到門上寫著一個(gè)奇怪的算式:
ABCDE * ? = EDCBA
他對(duì)華生說(shuō):“ABCDE應(yīng)該代表不同的數(shù)字,問(wèn)號(hào)也代表某個(gè)數(shù)字!”
華生:“我猜也是!”
于是,兩人沉默了好久,還是沒(méi)有算出合適的結(jié)果來(lái)。
請(qǐng)你利用計(jì)算機(jī)的優(yōu)勢(shì),找到破解的答案。
把 ABCDE 所代表的數(shù)字寫出來(lái)。
public class TDemo02_two {publicstaticvoid main(String[] args){for(int i=10000;i<100000;i++){int a = i/10000;int b = i%10000/1000;int c = i%10000%1000/100;int d = i%10000%1000%100/10;int e = i%10;if(a==b||a==c||a==d||a==e||b==c||b==d||b==e||c==d||c==e||d==e){continue;}int y = e*10000+d*1000+c*100+b*10+a;if(y%i==0){System.out.println(i+"*"+y/i+"="+y);}}}
}
運(yùn)行結(jié)果:
21978*4=87912
public class Demo02 { // 檢查是否是全111111... public static boolean check(int[] b){ boolean flag = true; for(int i=0;i<b.length;i++){ if(b[i]==0){ flag = false; break; } } return flag; } // 檢查是否是一個(gè)五位數(shù) public static boolean checkFive(int[] b){ boolean flag = false; int count = 0; for(int i=0;i<b.length;i++){ if(b[i]==1){ count++; } } if(count==5) flag = true; return flag; } // 得到一個(gè)五位數(shù)字 public static String values(int[] b){ StringBuffer sb = new StringBuffer(); for(int i=0;i<b.length;i++){ if(b[i]!=0){ sb.append(i); } } return sb.toString(); } // 反轉(zhuǎn) n public static int reverse(int n){ StringBuffer sb = new StringBuffer(); sb.append(n); sb.reverse(); return Integer.parseInt(sb.toString()); } // 進(jìn)位得到下一個(gè)數(shù)字 public static void modify(int[] b){ b[b.length-1]++; for(int i=b.length-1;i>0;i--){ if(b[i]>1){ b[i] = 0; b[i-1]++; } } } public static void calc(String s){ int n = Integer.parseInt(s); // 得到一個(gè)五位數(shù)字 int r = reverse(n); // 反轉(zhuǎn) n if(r%n==0) // 得到結(jié)果 n * ? = r System.out.println(n+"*"+(r/n)+"="+r); } public static void allSort(char[] c,int start,int end){ char temp = 0; if(start==end){ String s = new String(c); if((s.charAt(0)-'0')!=0){ calc(s); // 計(jì)算結(jié)果 } }else{ for(int i=start;i<=end;i++){ temp = c[start]; c[start] = c[i]; c[i] = temp; allSort(c,start+1,end); temp = c[start]; c[start] = c[i]; c[i] = temp; } } } public static void f(int[] b){ for(;;){ if(check(b)) break; // 檢查是否是全111111... modify(b); // 進(jìn)位,進(jìn)行下一個(gè)數(shù)字的測(cè)試 if(!checkFive(b)) continue; // 檢查是否是一個(gè)五位數(shù)字 String s = values(b); // 得到一個(gè)五位數(shù)字 char[] c = s.toCharArray(); allSort(c,0,c.length-1); // 全排列其中一個(gè)五位數(shù),并計(jì)算結(jié)果 } } public static void main(String[] args){ int[] b = new int[10]; f(b); }
}運(yùn)行結(jié)果:
21978*4=87912
public class Demo02 { // 檢查是否是全111111... public static boolean check(int[] b){ boolean flag = true; for(int i=0;i<b.length;i++){ if(b[i]==0){ flag = false; break; } } return flag; } // 檢查是否是一個(gè)五位數(shù) public static boolean checkFive(int[] b){ boolean flag = false; int count = 0; for(int i=0;i<b.length;i++){ if(b[i]==1){ count++; } } if(count==5) flag = true; return flag; } // 得到一個(gè)五位數(shù)字 public static String values(int[] b){ StringBuffer sb = new StringBuffer(); for(int i=0;i<b.length;i++){ if(b[i]!=0){ sb.append(i); } } return sb.toString(); } // 反轉(zhuǎn) n public static int reverse(int n){ StringBuffer sb = new StringBuffer(); sb.append(n); sb.reverse(); return Integer.parseInt(sb.toString()); } // 進(jìn)位得到下一個(gè)數(shù)字 public static void modify(int[] b){ b[b.length-1]++; for(int i=b.length-1;i>0;i--){ if(b[i]>1){ b[i] = 0; b[i-1]++; } } } public static void calc(String s){ int n = Integer.parseInt(s); // 得到一個(gè)五位數(shù)字 int r = reverse(n); // 反轉(zhuǎn) n if(r%n==0) // 得到結(jié)果 n * ? = r System.out.println(n+"*"+(r/n)+"="+r); } public static void allSort(char[] c,int start,int end){ char temp = 0; if(start==end){ String s = new String(c); if((s.charAt(0)-'0')!=0){ calc(s); // 計(jì)算結(jié)果 } }else{ for(int i=start;i<=end;i++){ temp = c[start]; c[start] = c[i]; c[i] = temp; allSort(c,start+1,end); temp = c[start]; c[start] = c[i]; c[i] = temp; } } } public static void f(int[] b){ for(;;){ if(check(b)) break; // 檢查是否是全111111... modify(b); // 進(jìn)位,進(jìn)行下一個(gè)數(shù)字的測(cè)試 if(!checkFive(b)) continue; // 檢查是否是一個(gè)五位數(shù)字 String s = values(b); // 得到一個(gè)五位數(shù)字 char[] c = s.toCharArray(); allSort(c,0,c.length-1); // 全排列其中一個(gè)五位數(shù),并計(jì)算結(jié)果 } } public static void main(String[] args){ int[] b = new int[10]; f(b); }
}運(yùn)行結(jié)果:
21978*4=87912
😜微生物增殖
假設(shè)有兩種微生物 X 和 Y
X出生后每隔3分鐘分裂一次(數(shù)目加倍),Y出生后每隔2分鐘分裂一次(數(shù)目加倍)。
一個(gè)新出生的X,半分鐘之后吃掉1個(gè)Y,并且,從此開(kāi)始,每隔1分鐘吃1個(gè)Y。
現(xiàn)在已知有新出生的 X=10, Y=89,求60分鐘后Y的數(shù)目。
如果X=10,Y=90 呢?
本題的要求就是寫出這兩種初始條件下,60分鐘后Y的數(shù)目。
題目的結(jié)果令你震驚嗎?這不是簡(jiǎn)單的數(shù)字游戲!真實(shí)的生物圈有著同樣脆弱的性質(zhì)!也許因?yàn)槟阆麥绲哪侵?Y 就是最終導(dǎo)致 Y 種群滅絕的最后一根稻草!
package Question20_29;
importjava.util.Scanner;
publicclass Question22MustRemember {publicstaticvoid calculate(int primaryNumX,int primaryNumY,int timesOfMinute) {int numX=primaryNumX,numY=primaryNumY;for (int i = 2; i <=timesOfMinute*2; i++) {if(numY<=0){numY=0;break;}if(i%2==0){numY-=primaryNumX;// 當(dāng)為整數(shù)分鐘時(shí),最初數(shù)目的生物X將進(jìn)食同等數(shù)目的生物Y}elseif(i%2==1){numY-=(numX-primaryNumX); //當(dāng)為半數(shù)分鐘的奇數(shù)倍時(shí),由最初的生物X增值產(chǎn)生的生物X將進(jìn)食同等數(shù)目的生物Y}if(i%6==0){numX*=2; //三分鐘的整數(shù)倍,生物X增值一倍}if(i%4==0){numY*=2; //兩分鐘的整數(shù)倍,生物Y增值一倍}}System.out.println(numY);}publicstaticvoid main(String[] args) {calculate(10, 89, 60);calculate(10, 90, 60);
// Scanner scanner=new Scanner(System.in);
// int numX=scanner.nextInt(),numY=scanner.nextInt();
// System.out.println(numX+" "+numY);}
}
運(yùn)行結(jié)果:
-979369984
94371840
94371840
public class Demo01 { public static void microAdd(long x,long y,int m){ for(int i=1;i<=m;i++){ y -= x; // 吃掉x個(gè)y if(i%3==0) x *= 2; // 每隔3分鐘x分裂一次 if(i%2==0) y *= 2; // 每隔2分鐘y分裂一次 } System.out.println(y); } public static void main(String[] args){ microAdd(10,89,60); microAdd(10,90,60); }
} 運(yùn)行結(jié)果:
-979369984
94371840
結(jié)果如果是負(fù)數(shù)應(yīng)置為0!!
😜密碼發(fā)生器
在對(duì)銀行賬戶等重要權(quán)限設(shè)置密碼的時(shí)候,我們常常遇到這樣的煩惱:如果為了好記用生日吧,
容易被破解,不安全;如果設(shè)置不好記的密碼,又擔(dān)心自己也會(huì)忘記;如果寫在紙上,擔(dān)心紙張被別人發(fā)現(xiàn)或弄丟了…
這個(gè)程序的任務(wù)就是把一串拼音字母轉(zhuǎn)換為6位數(shù)字(密碼)。
我們可以使用任何好記的拼音串(比如名字,王喜明,就寫:wangximing)作為輸入,程序輸出6位數(shù)字。
變換的過(guò)程如下:
第一步. 把字符串6個(gè)一組折疊起來(lái),比如wangximing則變?yōu)?#xff1a;
wangxi
ming
第二步. 把所有垂直在同一個(gè)位置的字符的ascii碼值相加,得出6個(gè)數(shù)字,如上面的例子,則得出:
228 202 220 206 120 105
第三步. 再把每個(gè)數(shù)字“縮位”處理:就是把每個(gè)位的數(shù)字相加,得出的數(shù)字如果不是一位數(shù)字,
就再縮位,直到變成一位數(shù)字為止。例如: 228 => 2+2+8=12 => 1+2=3
上面的數(shù)字縮位后變?yōu)?#xff1a;344836, 這就是程序最終的輸出結(jié)果!
要求程序從標(biāo)準(zhǔn)輸入接收數(shù)據(jù),在標(biāo)準(zhǔn)輸出上輸出結(jié)果。
輸入格式為:第一行是一個(gè)整數(shù)n(<100),表示下邊有多少輸入行,接下來(lái)是n行字符串,就是等待變換的字符串。
輸出格式為:n行變換后的6位密碼。
例如,輸入:
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
則輸出:
772243
344836
297332
716652
875843
package Question10_19;
import java.util.Scanner;
publicclass Question19 {publicstaticint simplify(int n) {String s;while (n>=10) {s=n+"";n=0;for (int i = 0; i < s.length(); i++) {n+=s.charAt(i)-'0';}}return n;}publicstaticvoid main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();String s;scanner.nextLine();while((n--)>0){int array[]=newint[6];s=scanner.nextLine();for (int i = 0; i < s.length(); i++) {array[i%6]+=(int)(s.charAt(i));}for (int i = 0; i < 6; i++) {System.out.print(simplify(array[i]));}System.out.println();}// System.out.println(simplify(123456789));}
}
運(yùn)行結(jié)果:
輸入整數(shù)n(<100)表示下邊有多少輸入行:
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
772243
344836
297332
716652
875843
👉其他
📢作者:小空和小芝中的小空
📢轉(zhuǎn)載說(shuō)明-務(wù)必注明來(lái)源:https://zhima.blog.csdn.net/
📢這位道友請(qǐng)留步??,我觀你氣度不凡,談吐間隱隱有王者霸氣💚,日后定有一番大作為📝!!!旁邊有點(diǎn)贊👍收藏🌟今日傳你,點(diǎn)了吧,未來(lái)你成功??,我分文不取,若不成功??,也好回來(lái)找我。
溫馨提示:點(diǎn)擊下方卡片獲取更多意想不到的資源。