模拟法基础例题(Java版)

Posted 敲代码的xiaolang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟法基础例题(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版)的主要内容,如果未能解决你的问题,请参考以下文章

天干地支(Java)

2020年第十一届蓝桥杯 - 国赛 - Java大学C组 - F.天干地支

2020年第十一届蓝桥杯 - 国赛 - Java大学C组 - F.天干地支

天干地支

蓝桥杯真题天干地支

天干地支