Java教程

模拟法基础例题(Java版)

本文主要是介绍模拟法基础例题(Java版),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

算式问题.

题目描述:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
看这个算式:
☆☆☆ + ☆☆☆ = ☆☆☆
如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种可能的正确填写方法?
173 + 286 = 459
295 + 173 = 468
173 + 295 = 468
183 + 492 = 675
以上都是正确的填写法!
注意:111+222=333 是错误的填写法!因为每个数字必须是不同的!也就是说:1 ~ 9 中的所有数字,每个必须出现且仅出现一次!
注意:不包括数字 “0”。
注意:满足加法交换率的式子算两种不同的答案。 所以答案肯定是个偶数!
运行限制:
 1. 最大运行时间:1s
 2. 最大运行内存: 128M
public class Main {
    static int check(int a, int b, int c){
        int flag[]=new int[11];
        for(int i=0;i<10;i++) {
        	flag[i]=0;
        }
        flag[0]=1;
        while(a!=0){
            if(flag[a%10]==1) {
            	return 0;
            }
            else {
            	flag[a%10]=1;
            }
            if(flag[b%10]==1) {
            	return 0;
            }
            else {
            	flag[b%10]=1  ;
            }
            if(flag[c%10]==1) {
            	return 0;
            }
            else {
            	flag[c%10]=1  ;
            }
            a=a/10;
            b=b/10;
            c=c/10;
        }
        return 1;
    }
    public static void main(String[] args) {
        int ans=0;
        for(int a=123;a<=987;a++) {
        	for(int b=123;b<=987-a;b++) {
                int c=a+b;
                if(check(a,b,c)==1) {
                    ans++;
                    System.out.println(a+"+"+b+"="+c);
                }
            }
        }
        System.out.println(ans);
    }
}
//运行结果为336

提交的代码:

public class Main {
    public static void main(String[] args) {
        System.out.println(336);
    }
}

约数

题目描述:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为 St​。
例如 S1=1,S2=2,S3=4,S4=6,⋅⋅⋅
现在小明想知道,当 t=100 时,S1​00 是多少?
运行限制:
 1. 最大运行时间:1s
 2. 最大运行内存:128M
public class Main {
	public static void main(String[] args){
		int i;
		for(i = 1;; i++) {
			int count = 0;
			for(int j = 1; j <= i; j++) {
				if(i%j==0) {
					count++;
				}
			}
			if(count==100) {
				break;
			}
		}
		System.out.println(i);
	}
}
//运行结果:45360

提交的代码:

public class Main {
    public static void main(String[] args) {
        System.out.println(45360);
    }
}

既约分数
在这里插入图片描述
提交的代码:

public class Main {
	  static int gcd(int a, int b){
	      int temp;
	      while(b>0){
	          temp = b;
	          b = a % b;
	          a = temp;
	      }
	      return a;
	  }
	  public static void main(String[] args) {
	      int ans=0;
	      for(int a=1;a<=2020;a++){
	          for(int b=1;b<=2020;b++){
	              if(gcd(a,b)==1) {
	            	  ans++;
	              }
	          }
	      }
	      System.out.println(ans);
	  }
}
//结果是2481215

天干地支

题目描述:
古代中国使用天干地支来记录当前的年份。
天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。
地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。
将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
2020 年是庚子年。
每过一年,天干和地支都会移动到下一个。例如 2021 年是辛丑年。
每过 60 年,天干会循环 6 轮,地支会循环 5 轮,所以天干地支纪年每 60 年轮回一次。例如 1900 年,1960 年,2020 年都是庚子年。
给定一个公元纪年的年份,请输出这一年的天干地支年份。
输入描述:
输入一行包含一个正整数,表示公元年份。
其中有 ,输入的公元年份为不超过 9999 的正整数。
输出描述:
输入一行包含一个正整数,表示公元年份。
输入输出样例:
输入
2020
输出
gengzi
运行限制
 1. 最大运行时间:1s
 2. 最大运行内存: 128M
import java.util.Scanner;
public class Main {
    static String []tg = new String []{"geng", "xin", "ren", "gui", "jia", "yi" , "bing", "ding", "wu", "ji"};
    static String []dz = new String []{ "shen", "you", "xu", "hai", "zi", "chou", "yin", "mou", "chen", "si", "wu", "wei"};
    public static void main(String[] args){
        int year;
        Scanner in =new Scanner(System.in);
        year = in.nextInt();
        System.out.println(tg[year%10]+""+dz[year%12]);
    }
}

有问题欢迎评论区留言。

这篇关于模拟法基础例题(Java版)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!