37.
#include<stdio.h>
int main()
{
int a[20][20],i,j,n,m=1,l,k=0;
scanf("%d",&n);
l=n;
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<l;j++)
{
a[k][j+k]=j+m;
a[n-1-k][j+k]=3*l-3+m-j;
}
for(j=1;j<=l-1;j++)
{
a[j+k][k]=4*l-4-j+m;
a[j+k][n-1-k]=l+j+m-1;
}
m=m+4*l-4;
l=l-2;
k=k+1;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
38.
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[10000],ch;static int b[10000];
long int n,k,i,j=0,m;int h=0;
scanf("%s %c %d",a,&ch,&n);
k=strlen(a);
for(i=0;i<k;i++) if(a[i]=='.') h=1;
if(h==0)
{
a[k]='.';a[k+1]='0';
k=k+2;
}
for(i=0;i<k;i++)
{
if(a[i]=='.') m=i;
else
{
b[j]=a[i]-48;
j++;
}
}
if(m+n<1)
{
printf("0.");
for(j=m+n;j<m+n+8;j++)
{
if(j>=0) printf("%d",b[j]);
else printf("0");
}
printf("\n");
}
else{
for(j=0;j<m+n;j++) printf("%d",b[j]);
printf(".");
for(j=m+n;j<m+n+8;j++)
{
if(j>=0) printf("%d",b[j]);
else printf("0");
}
printf("\n");
}
return 0;
}
39.
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,s,i,j,a1,a2,b,c;
scanf("%d",&n);
a1=pow(10,n-1);
a2=pow(10,n);
s=0;
if(n==0) printf("0\n");
else{
for(i=a1;i<a2;i++)
{
a=0;
for(j=0;j<n;j++)
{
b=i/pow(10,j);
c=pow(n-j,2);
if(b%c==0) a++;
else {
a=-1;
break;
}
}
if(a==n) s++;
}
printf("%d\n",s);
}
return 0;
}
40.
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[10000],b[10000];
static int c[10000],d[10000];
int k1,k2,i=0,j=0,max1,max2;
scanf("%s %s",a,b);
k1=strlen(a);k2=strlen(b);
for(i=0;i<k1;i++)
{
if(a[i]>='0'&&a[i]<'9') c[i]=a[i]-48;
else c[i]=a[i]-55;
}
for(i=0;i<k2;i++)
{
if(b[i]>='0'&&b[i]<='9') d[i]=b[i]-48;
else d[i]=b[i]-55;
}
max1=0;max2=0;
for(i=0;i<k1;i++) if(max1<c[i]) max1=c[i];
for(i=0;i<k2;i++) if(max2<d[i]) max2=d[i];
static int e[36],f[36];int h=0,h1,h2,z=0,x,num1,num2,p=0,q=0;
for(j=max1+1;j<=36;j++)
{
x=0;
for(i=0;i<k1;i++) x+=c[i]*pow(j,k1-1-i);
e[h]=x;h++;
}
h1=h;
h=0;
for(j=max2+1;j<=36;j++)
{
x=0;
for(i=0;i<k2;i++) x+=d[i]*pow(j,k2-1-i);
f[h]=x;h++;
}
h2=h;
for(p=0;p<h1;p++)
for(q=0;q<h2;q++)
{
if(e[p]==f[q])
{
num1=max1+1+p;num2=max2+1+q;
printf("%s (base %d) = %s (base %d)\n",a,num1,b,num2);
z=1;
break;
}
if(z==1) break;
}
if(z==0) printf("%s is not equal to %s in any base 2..36\n",a,b);
return 0;
}
41.
#include<stdio.h>
#include<math.h>/*这一行可以没有。*/
int main()
{
int i,j,s1=0,s2=0,t;
int a[11];
char b[6],c[6];
scanf("%d\n",&a);
scanf("%s\n%s",&b,&c);
for(i=0,j=1;i<5;i++,j++)
a[j]=b[i]-48;
for(i=0,j=6;i<5;i++,j++)
a[j]=c[i]-48;
for(i=0;i<11;i++)
{
if(i%2==0) s1+=a[i];
else s2+=a[i];
}
t=9-(s1*3+s2-1)%10;
printf("%d\n",t);
return 0;
}
42.
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char s[1000000];char op;
static int b[1000000];
int k,i=0,j=0;int max,min;
scanf("%s",s);
k=strlen(s);
op=s[k-3];
for(i=0;i<k-3;i++)
if(s[i]==',') b[j]=i,j++;
int p=0,a=0,m=0,x;
if(s[0]=='-')
{
for(i=b[0]-1;i>0;i--) a+=(s[i]-'0')*pow(10,p++);
a=-1*a;
}
else{
for(i=b[0]-1;i>=0;i--) a+=(s[i]-'0')*pow(10,p++);
}
max=a,min=a;
for(i=0;i<j-1;i++)
{
p=0,a=0;
x=b[i];
if(s[x+1]=='-')
{
for(m=b[i+1]-1;m>b[i]+1;m--) a+=(s[m]-'0')*pow(10,p++);
a=-1*a;
}
else{
for(m=b[i+1]-1;m>=b[i]+1;m--) a+=(s[m]-'0')*pow(10,p++);
}
if(max<a) max=a;
if(min>a) min=a;
}
int g;
if(op=='+')
{
g=max+min;
if(max<0&&min<0) printf("(%d) + (%d) = %d\n",max,min,g);
else if(max<0&&min>=0) printf("(%d) + %d = %d\n",max,min,g);
else if(max>=0&&min<0) printf("%d + (%d) = %d\n",max,min,g);
else if(max>=0&&min>=0) printf("%d + %d = %d\n",max,min,g);
else;
}
else if(op=='-')
{
g=max-min;
if(max<0&&min<0) printf("(%d) - (%d) = %d\n",max,min,g);
else if(max<0&&min>=0) printf("(%d) - %d = %d\n",max,min,g);
else if(max>=0&&min<0) printf("%d - (%d) = %d\n",max,min,g);
else if(max>=0&&min>=0) printf("%d - %d = %d\n",max,min,g);
else;
}
else if(op=='*')
{
g=max*min;
if(max<0&&min<0) printf("(%d) * (%d) = %d\n",max,min,g);
else if(max<0&&min>=0) printf("(%d) * %d = %d\n",max,min,g);
else if(max>=0&&min<0) printf("%d * (%d) = %d\n",max,min,g);
else if(max>=0&&min>=0) printf("%d * %d = %d\n",max,min,g);
else;
}
else if(op=='/')
{
g=max/min;
if(max<0&&min<0) printf("(%d) / (%d) = %d\n",max,min,g);
else if(max<0&&min>=0) printf("(%d) / %d = %d\n",max,min,g);
else if(max>=0&&min<0) printf("%d / (%d) = %d\n",max,min,g);
else if(max>=0&&min>=0) printf("%d / %d = %d\n",max,min,g);
else;
}
else{
g=max%min;
if(max<0&&min<0) printf("(%d) %% (%d) = %d\n",max,min,g);
else if(max<0&&min>=0) printf("(%d) %% %d = %d\n",max,min,g);
else if(max>=0&&min<0) printf("%d %% (%d) = %d\n",max,min,g);
else if(max>=0&&min>=0) printf("%d %% %d = %d\n",max,min,g);
else;
}
}
43.
#include<stdio.h>
#include<string.h>
int main()
{
int num=0,i=0;
scanf("%d",&num);
int w[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char v[11]={'1','0','X','9','8','7','6','5','4','3','2'};
for(i=0;i<num;i++)
{
char s[100],s1[100];
memset(s,0,sizeof(s));memset(s1,0,sizeof(s1));
int sum=0,k=0,j=0;
scanf("\n%s",s);
k=strlen(s);
if(k==18)
{
for(j=0;j<17;j++) sum+=(s[j]-48)*w[j];
if(s[17]==v[sum%11]) printf("Valid\n");
else printf("Invalid\n");
}
else if(k==15){
for(j=0;j<6;j++) s1[j]=s[j];
if(s[12]=='9'&&s[13]=='9'&&(s[14]=='6'||s[14]=='7'||s[14]=='8'||s[14]=='9')) s1[6]='1',s1[7]='8';
else s1[6]='1',s1[7]='9';
for(j=6;j<15;j++) s1[j+2]=s[j];
for(k=0;k<17;k++) sum+=(s1[k]-48)*w[k];
s1[17]=v[sum%11];
for(j=0;j<18;j++) printf("%c",s1[j]);
printf("\n");
}
else printf("Invalid\n");
}
}
44.
#include<stdio.h>
#include<string.h>
int main()
{
int num,i=0,p=0;
scanf("%d",&num);
for(i=0;i<num;i++)
{
char s[100000],s1[100000],s2[100000];//s1[500]是前面那个数字倒过来,s2[500]是后面那个数字倒过来
static int a1[100000],a2[100000],a[100000];
memset(s,0,sizeof(s));memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));
memset(a1,0,sizeof(a1));memset(a2,0,sizeof(a2));memset(a,0,sizeof(a));
int j=0,k=0,x=0,m=0,n=0,max=0,min=0;
char op;
scanf("\n%s",s);
k=strlen(s);
for(j=0;j<k;j++)
{
if(s[j]=='+') {
x=j,op='+';break;
}
else if(s[j]=='-') {
x=j,op='-';break;
}
else;
}
for(j=x-1,m=0;j>=0;j--,m++) s1[m]=s[j],max=m;
for(j=k-1,n=0;j>x;j--,n++) s2[n]=s[j],min=n;
for(m=0;m<=max;m++) a1[m]=s1[m]-'0';
for(n=0;n<=min;n++) a2[n]=s2[n]-'0';
if(max<min) max=min;
int m1=0,m2=0,l,l1=0;
if(op=='+')
{
for(p=0;p<=max;p++)
{
if(a1[p]+a2[p]>9) a[p]=(a1[p]+a2[p])%10,a1[p+1]++;
else a[p]=a1[p]+a2[p];
}
if(a1[max]+a2[max]>9) a[max+1]=1;
if(a[max+1]==0)
for(p=max;