1.报数游戏
思路:
第1-10个: 20 24 40 48 60 72 80 96 100 120
第11-20个:140 144 160 168 180 192 200 216 220 240
第21-30个:260 264 280 288 300 312 320 336 340 360
第31-40个:380 384 400 408 420 432 440 456 460 480
思路一:发现第10个数,第20个数,第30个数,第40个数......(每十个数为一轮)等等都是120的倍数,既然题目要求第202420242024个数,那我们不妨先求第202420242020个数,然后再往后再多求4个数就行。
也就是202420242020/10*120=202429042904240,找它之后的四个能被20或24整除的数,也就是2429042904288
思路二:通过观察发现,第奇数位个数是20的倍数,第偶数位个数是24的倍数。所以第202420242024个数就是24的倍数,那我们直接除以2(判断是这个数是第几个24的倍数),然后再成24就行。也就是202420242024÷2×24=2429042904288
代码:
java
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Long n = 202420242024L;
Long result = 202420242024L/2*24;
System.out.println(result);
}
}
2.类斐波那契循环数
思路:
对于0--10的七次方的数,可以枚举每一个数,是否符合类斐波那契循环数 ,并找出最大的数
代码
java
package 十五届.Java;
import java.util.Scanner;
public class 斐波那契 {
public static boolean lf(int a)
{
String str=String.valueOf(a);
int b =str.length();//s为位数
int [] arr = new int[b];
for(int i=0;i<b;i++)
{
arr[i]=str.charAt(i)-'0'; //取出每一个数字
}
while(arr[b-1]<a) //循环直到找到答案,。查出的数字小于本身
{
int n=0;
for(int i=0;i<b;i++)//计算新值,数组值前移
{
n+=arr[i];
if(i<b-1)//限制条件
{
arr[i]=arr[i+1];
}
if(i==b-1)
{
arr[i]=n;
}
}
if(n==a)
{
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int answer=0;
for(int i=10;i<=10000000;i++)
{
if(lf(i))
{
answer=i;
}
}
System.out.println(answer);
scan.close();
}
}
分布式队列
思路:
代码: