寒假05:最大最小公倍数、K好数
来源:互联网 发布:今日头条乱下软件 编辑:程序博客网 时间:2024/06/06 05:19
算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
这个题之前提到过是分几种情况讨论的。num=n*(n-),看num和第三个数是否同为奇偶,如果不是的最小公倍数就是n*(n-1)*(n-2),如果不是的则考虑第三个数下滑一个为
n*(n-1)*(n-3)这时需要考虑n和(n-3)是不是3的倍数如果是则需将n-1,再重新考虑。这种方法比较麻烦。
我用的方法是穷举几个数就够了。哦,还有int和double类型都是装不下的,这是个坑。
代码:
import java.util.Scanner;public class 最大最小公倍数 {public static void main(String[] args) {long max=0;Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n=sc.nextInt();for (long i = n; i >n-10&&i>0; i--) {for (long j = i; j >n-10&&j>0; j--) {long num=i*j/gcd(i,j);for (long h = j; h >n-10&&h>0; h--) {long num2=num*h/gcd(h,num);if(num2>max){max=num2;}}}}System.out.println(max);}}private static long gcd(long i, long j) {if(i%j==0)return j;return gcd(j,i%j);}}
算法训练 K好数
时间限制:1.0s 内存限制:256.0MB
问题描述
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。
输入格式
输入包含两个正整数,K和L。
输出格式
输出一个整数,表示答案对1000000007取模后的值。
样例输入
4 2
样例输出
7
数据规模与约定
对于30%的数据,KL <= 106;
对于50%的数据,K <= 16, L <= 10;
对于100%的数据,1 <= K,L <= 100。
网上别人讲的是动态规划,没太明白他的意思,也一起贴出来。
import java.util.Scanner;public class K好数 {static int k,l;public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){k=sc.nextInt();l=sc.nextInt();//穷举的范围int min=(int)Math.pow(k,l-1);int max=(int)Math.pow(k,l);int count=0;for (int i = min; i < max; i++) {boolean fa=getbool(i);if(fa){count++;if(count==1000000007){count=0;}}}System.out.println(count);}}//转成进制//private static String getJZ(int i) {//String s="";//while(i!=0){//s=i%k+s;//i=i/k;//}//return s;//}//转成进制的优化private static boolean getbool(int i) {int a=i%k,b=0;i=i/k;while(i!=0){b=i%k;if(Math.abs(a-b)==1)return false;elsea=b;i=i/k;}return true;}}
别人写的动态规划的:
import java.util.*;import java.math.*;import java.util.regex.*;public class Main { final static int MOD = 1000000007; final static int INF = 0x3f3f3f3f; final static int NUM = 100; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int k,l; int ans; while(sc.hasNext()) { k=sc.nextInt();l=sc.nextInt(); ans=0; int[][] nums = new int[l][k]; for(int i=0;i<l;i++)for(int j=0;j<k;j++)nums[i][j]=0; for(int j=0;j<k;j++) nums[0][j]=1; for(int i=1;i<l;i++) for(int j=0;j<k;j++) for(int x=0;x<k;x++) { if(x!=j-1 && x!=j+1) { nums[i][j]+=nums[i-1][x]; nums[i][j]%=MOD; } } for(int j=1;j<k;j++) { ans+=nums[l-1][j]; ans%=MOD; } System.out.println(ans); } }}好难啊!!
0 0
- 寒假05:最大最小公倍数、K好数
- K好数
- K好数 Java
- 蓝桥杯-k好数
- K好数
- 蓝桥杯 k好数
- k好数
- k好数
- k好数
- K好数 dp
- K好数 蓝桥杯
- DP-K 好数
- K好数
- 蓝桥杯 k好数
- 蓝桥杯 k好数
- K好数
- k好数
- K好数
- 数据库中的 date datetime timestamp的区别
- 一致性Hash(Consistent Hashing)原理剖析
- java集合之Set与List总结
- 事务
- Netty4.x中文教程系列(四)编解码器Codec
- 寒假05:最大最小公倍数、K好数
- 《盲女惊魂记》
- python标准模块——time
- 兔子-android studio中安装butterknife插件
- C#使用Monitor类、Lock和Mutex类进行多线程同步
- 小记-STM8S003F3端口复用和端口开漏
- 自定义ViewGroup神器ViewDragHelper
- 关于Java的一些NIO框架的一点想法
- 怎样理解condition