Unity3D特效百例 | 案例项目实战源码 | Android-Unity实战问题汇总 |
---|---|---|
游戏脚本-辅助自动化 | Android控件全解手册 | 再战Android系列 |
Scratch编程案例 | 软考全系列 | Unity3D学习专栏 |
蓝桥系列 | ChatGPT和AIGC |
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单。
俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
有一种赌局是这样的:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把任意数量的钱押在某个编号的匣子上。
所有玩家都下注后,庄家同时掷出3个骰子(骰子上的数字都是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; // 庄家总钱数
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; // 押注匣子号
int a; // 第一个骰子
int b; // 第二个骰子
int c; // 第三个骰子
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);
}
}
运行结果:
0.025
结果2:
0.022
结果3:
0.024
.....
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
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);
}
}
}
}
运行结果:
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;
}
// 检查是否是一个五位数
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;
}
// 得到一个五位数字
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();
}
// 反转 n
public static int reverse(int n){
StringBuffer sb = new StringBuffer();
sb.append(n);
sb.reverse();
return Integer.parseInt(sb.toString());
}
// 进位得到下一个数字
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); // 得到一个五位数字
int r = reverse(n); // 反转 n
if(r%n==0) // 得到结果 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); // 计算结果
}
}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); // 进位,进行下一个数字的测试
if(!checkFive(b)) continue; // 检查是否是一个五位数字
String s = values(b); // 得到一个五位数字
char[] c = s.toCharArray();
allSort(c,0,c.length-1); // 全排列其中一个五位数,并计算结果
}
}
public static void main(String[] args){
int[] b = new int[10];
f(b);
}
}
运行结果:
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;
}
// 检查是否是一个五位数
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;
}
// 得到一个五位数字
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();
}
// 反转 n
public static int reverse(int n){
StringBuffer sb = new StringBuffer();
sb.append(n);
sb.reverse();
return Integer.parseInt(sb.toString());
}
// 进位得到下一个数字
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); // 得到一个五位数字
int r = reverse(n); // 反转 n
if(r%n==0) // 得到结果 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); // 计算结果
}
}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); // 进位,进行下一个数字的测试
if(!checkFive(b)) continue; // 检查是否是一个五位数字
String s = values(b); // 得到一个五位数字
char[] c = s.toCharArray();
allSort(c,0,c.length-1); // 全排列其中一个五位数,并计算结果
}
}
public static void main(String[] args){
int[] b = new int[10];
f(b);
}
}
运行结果:
21978*4=87912
假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 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;// 当为整数分钟时,最初数目的生物X将进食同等数目的生物Y
}
elseif(i%2==1){
numY-=(numX-primaryNumX); //当为半数分钟的奇数倍时,由最初的生物X增值产生的生物X将进食同等数目的生物Y
}
if(i%6==0){
numX*=2; //三分钟的整数倍,生物X增值一倍
}
if(i%4==0){
numY*=2; //两分钟的整数倍,生物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);
}
}
运行结果:
-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个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);
}
}
运行结果:
-979369984
94371840
结果如果是负数应置为0!!
在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,
容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了…
这个程序的任务就是把一串拼音字母转换为6位数字(密码)。
我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。
变换的过程如下:
第一步. 把字符串6个一组折叠起来,比如wangximing则变为:
wangxi
ming
第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:
228 202 220 206 120 105
第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,
就再缩位,直到变成一位数字为止。例如: 228 => 2+2+8=12 => 1+2=3
上面的数字缩位后变为:344836, 这就是程序最终的输出结果!
要求程序从标准输入接收数据,在标准输出上输出结果。
输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是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));
}
}
运行结果:
输入整数n(<100)表示下边有多少输入行:
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
772243
344836
297332
716652
875843
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步??,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功??,我分文不取,若不成功??,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。