兰顿的蚂蚁 飞神的蚂蚁
百度百科
先进行模拟 得到2000之后的一步对应多少黑
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int fang = 0;
const int N = 10000;
int i=5000,j=5000;
int counter=0;
long long int k = 0;
int **a = new int* [N];
for(int i=0;i<N;i++){
a[i] = new int[N];
}
while(i< N && j< N && i>=0 && j>=0){
//printf("%d %d\n",i,j);
//printf("%d \n",a[i][j]);
//printf("fang %d \n",fang);
k++;
if(a[i][j]%2==0){
a[i][j]++;
if(fang==0){
j++;
}else if(fang ==1){
i++;
}else if(fang ==2){
j--;
}else if(fang ==3){
i--;
}
counter++;
//printf("+1");
fang++;
fang %=4;
}else{
a[i][j]++;
if(fang==0){
j--;
}else if(fang ==1){
i--;
}else if(fang ==2){
j++;
}else if(fang ==3){
i++;
}
counter--;
//printf("-1");
fang--;
fang =(fang+4)%4;
}
//if( k >= 20007){
cout<<k<<" "<<counter<<endl;
// }
}
return 0;
}
之后的规律就是 每隔104步增长12块黑,可以用计算器得到答案,直接输出就行
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
cout<<"115384615384614953"<<endl;
return 0;
}