a-i'm boring with life
求两个数阶乘的最大公因数
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int x,y;
int temp;
scanf("%d%d",&x,&y);
if(x<y)
{
temp=x;
x=y;
y=temp;
}
int sum=1;
for(int i=1;i<=y;i++)
sum=sum*i;
printf("%d",sum);
return 0;
}
B. Crossword solving
平移字符串然后比较
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define inf 1e9
int main()
{
int pos;
int n,m;
int cnt[1000];
int Min=inf;
bool vis[1000][1000];
char s[1005],t[10005];
scanf("%d%d%s%s",&n,&m,s,t);
memset(cnt,0,sizeof(cnt));
memset(vis,0,sizeof(vis));
for(int i=0;i<=m-n;i++)
{
for(int j=0;j<n;j++)
{
if(s[j]!=t[i+j])
{
cnt[i]++;
vis[i][j]=1;
}
}
}
for(int i=0;i<=m-n;i++)
{
if(cnt[i]<Min)
{
Min=cnt[i];
pos=i;
}
}
printf("%d\n",cnt[pos]);
int i;
for(i=0;i<m;i++)
{
if(vis[pos][i]==1)
{
printf("%d",i+1);
break;
}
}
for(int j=i+1;j<m;j++)
{
if(vis[pos][j]==1)
printf(" %d",j+1);
}
return 0;
}