第八届决赛 c++ B组 填空题
long res = ('M'-'A' + 10)*36*36*36 + ('A'-'A' + 10)*36*36 +('N'-'A' + 10)*36 +('Y'-'A' + 10) ;
System.out.println(res);
public class Main {
static int a[][] = new int[5][15];
static int res=0;
//判断某个点四个方向的2x2矩阵是否颜色相同
static boolean judge(int x,int y){
if(a[x][y]==a[x-1][y-1]&&a[x][y]==a[x-1][y]&&a[x][y]==a[x][y-1])
return false;
if(a[x][y]==a[x-1][y]&&a[x][y]==a[x-1][y+1]&&a[x][y]==a[x][y+1])
return false;
if(a[x][y]==a[x][y-1]&&a[x][y]==a[x+1][y-1]&&a[x][y]==a[x+1][y])
return false;
if(a[x][y]==a[x][y+1]&&a[x][y]==a[x+1][y]&&a[x][y]==a[x+1][y+1])
return false;
return true;
}
static void dfs(int x,int y){
if(x==3&&y==10){
res++;
return;
}
if(y>10){
dfs(x+1,1);
return;
}
//如果这个点没有被填
if(a[x][y]==-1){
//横向铺设
if(a[x][y+1]==-1){
//铺设黄色
a[x][y]=1;
a[x][y+1]=1;
if(judge(x,y)){
dfs(x,y+1);
}
//铺设黄色回溯
a[x][y]=-1;
a[x][y+1]=-1;
//铺设橙色
a[x][y]=2;
a[x][y+1]=2;
if(judge(x,y)){
dfs(x,y+1);
}
//铺设橙色回溯
a[x][y]=-1;
a[x][y+1]=-1;
}
//纵向铺设
if(a[x+1][y]==-1){
//铺设黄色
a[x][y]=1;
a[x+1][y]=1;
if(judge(x,y)){
dfs(x,y+1);
}
//铺设黄色回溯
a[x][y]=-1;
a[x+1][y]=-1;
//铺设橙色
a[x][y]=2;
a[x+1][y]=2;
if(judge(x,y)){
dfs(x,y+1);
}
//铺设橙色回溯
a[x][y]=-1;
a[x+1][y]=-1;
}
}
else{//如果这个点不行 遍历下一个点
dfs(x,y+1);
}
}
public static void main(String[] args) {
for(int i=1;i<=3;i++){
for(int j=1;j<=10;j++){
a[i][j]=-1;
}
}
//从(1,1)开始
dfs(1,1);
System.out.println(res);
}
}
第八届决赛 c++ C组 填空题
public class Main {
//判断是否是质数
static boolean is_prime(int x)
{
if (x < 2) return false;
for (int i = 2; i <= x / i; i ++ )
if (x % i == 0)
return false;
return true;
}
public static void main(String[] args) {
int n = 10000;
int m = 0;
for (int i = n; i > 3; i -= 2) {
for (int j = 1; 2 * j < i + 1; j += 1) {
if (is_prime(j) && is_prime(i - j)) {
m = Math.max(m, j);
break;
}
}
}
System.out.println(m);
}
}
import java.util.*;
public class Main {
static final int N = 20;
static int sum_1, sum_2, sum_3;
static int[] st = new int[N];
static int[] a = new int[N];
static void dfs(int u) {
if (u == 8 && a[0] == 1) {
int t1 = 0, t2 = 0, t3 = 0;
for (int i = 0; i < 8; i++) {
t1 += a[i];
t2 += a[i] * a[i];
t3 += a[i] * a[i] * a[i];
}
if (t1 == sum_1 && t2 == sum_2 && t3 == sum_3) {
Arrays.sort(a, 0, 8);
for (int i = 0; i < 8; i++)
System.out.print(a[i] + " ");
System.out.println();
}
return;
}
for (int i = 1; i <= 16; i++) {
if (st[i] == 0) {
a[u] = i;
st[i] = 1;
dfs(u + 1);
st[i] = 0;
}
}
}
public static void main(String[] args) {
for (int i = 1; i <= 16; i++) {
sum_1 += i;
sum_2 += i * i;
sum_3 += i * i * i;
}
sum_1 /= 2;
sum_2 /= 2;
sum_3 /= 2;
dfs(0);
}
}
第八届决赛 java B组 填空题
public class Main {
//平方根枚举范围为:[30000,100000],平方后判断是否包含0~9这九个数字。
static int judge(long i) {
int[] a = new int[10];
int ans = 0;
while (i != 0) {
int j = (int)(i % 10);
if (a[j] == 1)
return 0;
a[j] = 1;
ans++;
i /= 10;
}
if (ans == 10)
return 1;
return 0;
}
public static void main(String[] args) {
long i;
for (i = 100000; i >= 30000; i--) {
if (judge(i * i) == 1) {
System.out.println(i*i);
return;
}
}
}
}
第二题能力有限,不会
第八届决赛 java C组 填空题
int res = 0;
for (int i = 1; i <= 1000; i++) {
int k = i;
while(k > 0){
res += k%10;
k /= 10;
}
}
System.out.println(res);
与第八届决赛 c++ C组 填空题 的第二题相同