![](https://img-blog.csdn.net/20180324144115417)
![](https://img-blog.csdn.net/2018032414414040)
![](https://img-blog.csdn.net/20180324144155431)
![](https://img-blog.csdn.net/20180324144214524)
![](https://img-blog.csdn.net/20180324144220374)
![](https://img-blog.csdn.net/2018032414423673)
![](https://img-blog.csdn.net/20180324144241556)
![](https://img-blog.csdn.net/2018032414424745)
#include <stdio.h>
#include <string.h>
void convert()
{
char strb[200];
int i;
while(1)
{
gets(strb);
if(strcmp(strb,"endofinput")==0) return;
gets(strb);
for(i=0;i<200;i++)
{
if(strb[i]>='a'&& strb[i]<='z')
{
if(strb[i]>'u') strb[i]=strb[i]-21;
else strb[i]=strb[i]+5;
}
}
puts(strb);
gets(strb);
}
}
void gcd()//最大公约数
{
int a,b,r;
while(~scanf("%d %d",&a,&b))
{
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("%d
",b);
}
}
void gcd_n()
{
int a,b,r,n=3,i;
scanf("%d",&b);
for(i=0;i<n;i++)
{
scanf("%d",&a);
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
}
printf("%d
",b);
}
void shugen()//求数根
{
int s,flag=0,root=0,root1;
while(~scanf("%d",&s))
{
while(s!=0)
{
root+=s%10;
s/=10;
if(s==0) flag=1;
}
root1=root;
if(flag=1)
{
while(root>=10)
{
root1=0;
while(root!=0)
{
root1+=root%10;
root/=10;
}
}
printf("%d
",root1);
flag=0;
root=0;
}
}
}
void shugen1()
{
int m,root;
while(~scanf("%d",&m))
{
do{root=0;
while(m!=0)
{
root+=m%10;
m/=10;
}
m=root;
}while(root>=10);
printf("%d
",root);
}
}
void jttl()//鸡兔同笼
{
int feet;
while(~scanf("%d",&feet))
{
if(feet%2!=0) printf("0 0
");
else {
if(feet%4!=0) printf("%d %d
",feet/4+1,feet/2);
else printf("%d %d
",feet/4,feet/2);
}
}
}
void dianti()//电梯算法
{
int n,from,i,to,time;
while(~scanf("%d",&n))
{
from=0;
time=0;
for(i=0;i<n;i++)
{
scanf("%d",&to);
if(from>to) time+=(from-to)*4+5;
else if(to>from) time+=(to-from)*6+5;
from=to;
}
printf("%d",time);
}
}
void lbdshu()//路边的树
{
int a[1000];
int len,n,i,start,end,count=0;
while(~scanf("%d %d",&len,&n))
{
for(i=0;i<1000;i++) a[i]=1;
for(i=0;i<n;i++)
{
scanf("%d %d",&start,&end);
for(start;start<=end;start++)
a[start]=0;
}
for(i=0;i<=len;i++)
if(a[i]==1) count++;
printf("%d",count);
}
}
void dsdws()//大数的位数
{
long num,i;
double n;
while(~scanf("%d",&num))
{
n=1.0;
for(i=1;i<=num;i++)
n+=log10(i);
printf("%ld
",(long)n);
}
}
int addSqrt(int num)//会绕圈的数
{
int sum=0,i;
while(num!=0)
{
i=num%10;
num/=10;
sum+=i*i;
}
return sum;
}
void rqds()//会绕圈的数
{
int num,a[100],i,j,flag;
while(~scanf("%d",&num))
{
a[0]=num;
i=0;
flag=0;
while(flag==0)
{
i++;
num=addSqrt(num);
a[i]=num;
for(j=0;j<i;j++)
{
if(a[j]==num) {flag=i;break;}
}
}
for(i=1;i<=flag;i++)
printf("%d ",a[i]);
printf("
");
}
}
/*会绕圈的树
int circleNum(int m)
{
int n,sum=0;
while(m!=0)
{
n=m%10;
m/=10;
sum+=n*n;
}
return sum;
}
int main()
{
int m,a[100],i,k,flag;
while(~scanf("%d",&m))
{
flag=1;
if(m==0) break;
else
{
for(i=0;i<100;i++) a[i]=0;
a[0]=m;
i=1;
while(flag==1)
{
m=circleNum(m);
for(k=0;k<=i;k++)
{
if(a[k]==m) {flag=0;break;}
}
a[i]=m;
i++;
}
for(i=0;i<m;i++) printf("%d ",a[i]);
printf("
");
}
}
}
*/
void equalK()//K尾数相等
{
int num,i,sum,a[1000],f;
while(~scanf("%d",&num))
{
sum=1;
f=0;
if(num>=1000)
{num%=1000;f=1;}
for(i=0;i<1000;i++)
a[i]=0;
i=0;
while(1)
{
i++;
sum*=num;
if(f==1||sum>=1000)
{
sum=sum%1000;
if(a[sum]==0) a[sum]=i;
else break;
f=1;
}
}
printf("%d %d
",a[sum],i);
}
}