2.1 prime
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
bool check(int n) //判断是否为质数
{
if(n == 1)
return false;
if(n == 2)
return true;
else
{
for(int i=2;i < n;i++)
{
if(n % i == 0)
return false;
else
continue;
}
return true;
}
}
int arr[10086];
int main()
{
int n;
cin >> n;
int num;
int k;
int sum;
while(++n)
{
num = n;
k = 0;
sum = 0;
for(int j = 2;j <= num;j++)
{
if(num%j == 0&&check(j))
{
arr[k++] = j;
num/=j;
j --;
}
if(check(num))
{
arr[k] = num;
break;
}
}
for(int p = 0;p <= k;p++)
{
// cout <<arr[p]<<" ";
sum += arr[p];
}
if(check(sum))
break;
}
cout << n;
return 0;
}
2.2 transformation
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
char arr1[20][20];
char arr2[20][20];
int main()
{
int n;
bool flag1,flag2,flag3;
char ccc;
while(cin >> n)
{
for(int i = 0;i < n; i++)
{
for(int j = 0; j < n; j++)
cin >> arr1[i][j];
// cin >> ccc;
}
for(int k = 0; k < n; k++)
{
for(int t = 0; t < n ;t++)
cin >> arr2[k][t];
// cin >> ccc;
}
flag1 = true;
flag2 = true;
flag3 = true;
for(int m = 0; m < n ;m++)
for(int p = 0; p <n ;p++)
{
if(arr2[p][n-m-1]!=arr1[m][p])
{
flag1 =false;
// if(flag1 ==false)
// cout << m << " " << p<<" "<<endl;
}
if(arr2[m][n-p-1]!=arr1[m][p])
flag2 = false;
if(arr2[p][m]!=arr1[m][p])
flag3 = false;
}
if(flag1)
cout << "1" <<endl;
else if(flag2)
cout << "2" <<endl;
else if(flag3)
cout << "3" <<endl;
else
cout << "4" <<endl;
}
return 0;
}
2.3 Palindromes
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int arr[10086];
int main()
{
int s,n;
cin >> s >> n;
int len = 0;
int num;
bool check = true;
int result = 0;
while(s)
{
n++;
result = 0;
for(int j = 2;j<=10;j++)
{
num = n;
len = 0;
check = true;
while(num)
{
arr[++len] = num%j;
num/=j;
}
for(int k =1;k <= len;k++)
if(arr[k]!=arr[len-k+1])
{
check = false;
break;
}
if(check) result++;
if(result >= 2)
{
cout << n <<endl;
s--;
break;
}
}
}
return 0;
}
2.4 house
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int arr[200][200];
int move[4][2] = { {-1,0} , {1,0} , {0,-1} , {0,1} };
void DFS(int x,int y)
{
arr[x][y] = 0;//搜索到的位置清零
int nextX,nextY;
for(int t=0;t<4;t++) //搜索上下左右
{
nextX = x + move[t][0];
nextY = y + move[t][1];
if(arr[nextX][nextY] == 1)
DFS(nextX,nextY);
}
}
int main()
{
int n,m;
cin >> n >> m;
for(int i = 1; i <= n ;i++)
{
getchar();
for(int j = 1;j <= m;j++)
arr[i][j] = (getchar() == '1');
}
int num = 0;
for(int k = 1; k <= n; k++)
for(int p = 1; p <= m; p++)
{
if(arr[k][p] == 1)
{
num++;
DFS(k,p);
}
}
cout << num <<endl;
return 0;
}
2.5 Triangles
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int arr[15][15];//+为0 -为1
int sum;//-号个数
int num = 0;//满足题意的图形数
int n;
int i,j;
void prin(int n)
{
for(i = 1; i < n; i++)
{
for(j = 0; j < n-i;j++)
{
arr[i][j] = arr[i-1][j]+arr[i-1][j+1];
arr[i][j]%=2;
}
}
sum = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n-i;j++)
if(arr[i][j]) sum++;
if(3*sum == n*(n+1))
{
num++;
for(i = 0; i < n; i++)
{
for(j = 0; j < n-i;j++)
{
if(arr[i][j]) cout << '-'<<" ";
else cout << '+'<<" ";
}
cout <<endl;
}
}
}
void search(int step)
{
if(step >= n) prin(n);
else
{
arr[0][step] = 0; search(step+1);
arr[0][step] = 1; search(step+1);
}
}
int main()
{
cin >> n;
search(0);
cout << num;
return 0;
}