今天这服务器。。。。
第一题,百度一波儿定理,然后发现就是让求p-1的因子
#include
int main()
{
int p;
int cases; scanf("%d",&cases);
while(cases--)
{
scanf("%d",&p);
p--;
int ans = 0;
for(int i=1;i*i<=p;i++)
{
if(p%i==0)
{
if(i!=p/i) ans+=2;
else ans+=1;
}
}
printf("%d\n",ans);
}
return 0;
}
#include
#include
#include
using namespace std;
int n,m;
char s[20];
int monthday[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int cases; int year,month,day;
scanf("%d",&cases);
while(cases--)
{
scanf("%s",s);
year = (s[0]-48)*1000+(s[1]-48)*100+(s[2]-48)*10+(s[3]-48);
month = (s[5]-48)*10+(s[6]-48);
day = (s[8]-48)*10+(s[9]-48);
int ansmonth = month; int ansday = day;
while(1)
{
int tmp = monthday[2];
if((year%4==0&&year%100!=0)||year%400==0)
tmp+=1;
day += 7;
if(month==2&&day>tmp)
day%=tmp,month+=1;
else if(month!=2&&day>monthday[month])
{
day%=monthday[month]; month++;
}
if(month>12) month%=12,year++;
if(month==ansmonth&&day==ansday)
{
printf("%d\n",year);
break;
}
}
}
return 0;
}
#include
#include
int n,m;
char str[105][105];
int vis[105][105];
int dir[4][2] = {0,1,0,-1,1,0,-1,0};
void dfs(int x,int y)
{
vis[x][y] = 1;
// printf("%d %d\n",x,y);
for(int i=0;i<4;i++)
{
int nx = x+dir[i][0];
int ny = y+dir[i][1];
if(nx<0||nx>=n||ny<0||ny>=m) continue;
if(vis[nx][ny]||str[nx][ny]=='0') continue;
dfs(nx,ny);
}
}
int flag = 1;
void dfs2(int x,int y)
{
//printf("%d %d\n",x,y);
if(x==0||x==n-1||y==0||y==m-1) flag = 0;
vis[x][y] = 1;
for(int i=0;i<4;i++)
{
int nx = x+dir[i][0];
int ny = y+dir[i][1];
if(nx<0||nx>=n||ny<0||ny>=m) continue;
if(vis[nx][ny]||str[nx][ny]=='1') continue;
dfs2(nx,ny);
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i