1100: 求组合数(函数专题)
C
#include<stdio.h>
long long int t=1,a,b;
long fact(long n)
{
t = 1;
for (int i = 1; i <= n; i++)
t *= i;
return t;
}
int m, k;
int main()
{
scanf("%d%d", &m, &k);
a = fact(m - k);
b = fact(k);
t = fact(m);
printf("%lld", t / (a*b));
}
## 1101: 逆序数字(函数专题)
#### C
```c
#include<stdio.h>
#include<math.h>
int inverse(int n)
{
int i,b, a,t,m,c;
t = 0;
a = log10(n)+1;
for (i = 1; i <= a; i++)
{
m = n;
b = n / pow(10, a - i);
b = b % 10;
t += b * pow(10, i - 1);
}
return t;
}
int main()
{
int n,q,p;
scanf("%d", &n);
q = inverse(n);
printf("%d", q + n);
}
1101: 逆序数字(函数专题)
C
#include<stdio.h>
#include<math.h>
int inverse(int n)
{
int i,b, a,t,m,c;
t = 0;
a = log10(n)+1;
for (i = 1; i <= a; i++)
{
m = n;
b = n / pow(10, a - i);
b = b % 10;
t += b * pow(10, i - 1);
}
return t;
}
int main()
{
int n,q,p;
scanf("%d", &n);
q = inverse(n);
printf("%d", q + n);
}
1102: 火车票退票费计算(函数专题)
C
#include<stdio.h>
double CancelFee(double price)
{
price = price * 2;
price = price * 0.05+0.5;
price = (int)price;
return price / 2;
}
int main()
{
double a;
scanf("%lf", &a);
a = CancelFee(a);
printf("%.1f",a);
}
1103: 平均学分绩点(函数专题)
C
#include<stdio.h>
int point(int p)
{
if (p >= 50)
{
p = p - 50;
p = p / 10;
return p;
}
else
return 0;
}
int main()
{
int n, i, p,a,t,A=0;
double m=0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d %d", &a, &p);
p = point(p);
t = p * a;
m += t;
A += a;
}
m = m / A;
printf("%.1f", m);
}
1104: 求因子和(函数专题)
C
#include<stdio.h>
int sum;
int FacSum(int n)
{
for (int i = 1; i < n; i++)
{
if (n%i == 0)
sum += i;
}
return sum;
}
int main()
{
int n;
scanf("%d", &n);
n = FacSum(n);
printf("%d", n);
}
1105: 判断友好数对(函数专题)
C
#include<stdio.h>
int sum;
int FacSum(int n)
{
sum = 0;
for (int i = 1; i < n; i++)
{
if (n%i == 0)
sum += i;
}
return sum;
}
int main()
{
int n,m,a,b,t=0;
scanf("%d%d", &n,&m);
for (; n <= m; n++)
{
a = FacSum(n);
b = FacSum(a);
if (n == b&&n!=a&&a<=m)
{
printf("%d %d\n", n, a);
t = 1;
n = a;
}
}
if (t == 0)
printf("No answer");
}
1106: 回文数(函数专题)
C
#include<stdio.h>
#include<math.h>
int huiwen(int a)
{
int b,c,d,e,t=0,m,n;
b=log10(a);
m=b;
for(int i=1;i<=(b+1)/2;i++,m--)
{
c=a/pow(10,m);
c=c%10;
e=pow(10,i);
d=a%e;
n=pow(10,b-m);
d=d/n;
if(d==c)
continue;
else
{
t=1;
break;
}
}
if(t!=1)
return 1;
else
return 0;
}
int main()
{
int a,b,t;
scanf("%d%d",&a,&b);
for(;a<=b;a++)
{
t=huiwen(a);
if(t==1)
printf("%d ",a);
else
continue;
}
}
1107: 回文数猜想(函数专题)
C
#include<stdio.h>
#include<math.h>
int huiwen(int a)
{
int sum=0;
while (a)
{
sum = sum * 10 + a % 10;
a /= 10;
}
return sum;
}
int main()
{
int n, m;
scanf("%d", &n);
printf("%d ",n);
m = huiwen(n);
while(n != m)
{
m = huiwen(n);
if(m==n)
{
break;
}
n += m;
printf("%d ", n);
}
}
1108: 打印数字图形(函数专题)
C
#include<stdio.h>
void PrintLine(int m, int n)
{
int t = 0;
for (int p = 1; p < n; p++)
printf(" ");
for (int i = 1; i <= m; i++)
{
if (t == 0)
printf("%d", i);
else if (t == 1)
printf("%d", i - m);
if (i == m)
t = 1;
}
for (int i = m - 1; i >= 1; i--)
{
printf("%d", i);
}
}
int main()
{
int a, b, c, t = 0, n;
scanf("%d", &a);
for (int i = 1; i <= a; i++)
{
if (t == 0)
n = a - i+1;
else
n =-1*(a-i)+1;
if (i == a)
t = 1;
PrintLine(i, n);
printf("\n");
}
t = 0;
for (int i = a-1; i >=1; i--)
{
if (t == 0)
n = a - i + 1;
else
n = -1 * (a - i) + 1;
if (i == a)
t = 1;
PrintLine(i, n);
printf("\n");
}
}
1109: 数根(函数专题)
C
#include<stdio.h>
#include<math.h>
int digitSum(int n)
{
int a,t=0;
a = log10(n) + 1;
for (int i = 1; i <= a; i++)
{
t += n % 10;
n /= 10;
}
return t;
}
int main()
{
int n;
scanf("%d", &n);
while(n>=10)
n = digitSum(n);
printf("%d", n);
}
1110: 最近共同祖先(函数专题)
C
#include<stdio.h>
int common(int x, int y)
{
if (x == y)
return x;
if (x > y)
common(x / 2, y);
else
common(x, y / 2);
}
int main()
{
int x, y,t;
scanf("%d%d", &x, &y);
t=common(x, y);
printf("%d",t);
}
1111: 多个整数的逆序输出(函数专题)
C
#include<stdio.h>
void inverse(int n)
{
int a;
scanf("%d", &a);
if (n > 1)
{
inverse(n - 1);
printf("%d ", a);
}
if (n == 1)
printf("%d ", a);
}
int main()
{
int n, a;
scanf("%d", &n);
inverse(n);
}
1112: 进制转换(函数专题)
C
#include<stdio.h>
void convert(int n)
{
if(n > 0)
{
convert(n/2);
printf("%d", n % 2);
}
}
int main()
{
int n;
scanf("%d", &n);
convert(n);
}
1113: 递归调用的次数统计(函数专题)
C
#include<stdio.h>
int fib(int k);
int i=0;
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n", fib(n));
printf("递归调用了%d次", i);
return 0;
}
int fib(int k)
{
i++;
if (k == 1 || k == 2)
return 1;
else
return fib(k - 1) + fib(k - 2);
}
1114: 逆序(数组)
C
#include<stdio.h>
#define N 10
int main()
{
int n,i;
scanf("%d", &n);
int a[N];
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = n - 1; i >= 0; i--)
printf("%4d", a[i]);
}
1115: 数组最小值(数组)
C
#include<stdio.h>
#define N 1000
int main()
{
int a[N],n,max,t=0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
if(i==0)
max = a[i];
if (max > a[i])
{
max = a[i];
t = i;
}
}
printf("%d %d", max, t);
}
1116: 删除元素(数组)
C
#include<stdio.h>
void PrintArr(int b[],int n)
{
for(int i=0;i<=n;i++)
{
printf("%d ",b[i]);
}
}
void del(int a[], int n, int i)
{
int t=0;
while(t!=i)
t++;
for(;t<=n;t++)
{
a[t]=a[t+1];
}
PrintArr (a,n-2);
}
int main()
{
int a[10],n,i;
scanf("%d\n",&n);
for(i=0;i<=n-1;i++)
scanf("%d",&a[i]);
scanf("%d",&i);
del(a,n,i);
}
1117: 查找数组元素(数组)
C
#include<stdio.h>
int m = 0;
void PrintArr(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%4d",a[i]);
}
}
void del(int a[], int n, int i)
{
int t = 0;
while (t != i)
t++;
for (; t <= n; t++)
{
a[t] = a[t + 1];
}
PrintArr(a, n - 1);
}
int find(int a[], int n, int x)
{
for (int i = 0; i < n; i++)
{
if (a[i] == x)
return i;
else
m++;
}
if (m == n)
return -1;
}
int main()
{
int n, a[10], x;
scanf("%d",&n);
for (int i = 0; i < n; i++)
scanf("%d",&a[i]);
scanf("%d",&x);
m = find(a, n, x);
if (m == -1)
printf("Not Found");
else
del(a, n, m);
}
1118: 有序数组的元素添加
C
#include<stdio.h>
void insert(int a[], int n, int num);
void PrintArr(int a[], int n);
int main()
{
int a[100], n, num;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &num);
insert(a, n, num);
}
void insert(int a[], int n, int num)
{
int i;
for ( i = n-1; a[i] > num; i--)
{
a[i+1] = a[i];
}
a[i+1] = num;
PrintArr(a, n);
}
void PrintArr(int a[], int n)
{
for (int i = 0; i <= n; i++)
printf("%d ", a[i]);
}
1119: 一维数组排序(数组)
C
#include<stdio.h>
void sort(int a[], int n);
void PrintArr(int a[], int n);
int main()
{
int a[10],n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort(a, n);
}
void sort(int a[], int n)
{
int m;
for(int i=0;i<n;i++)
for (int j = 0; j < n; j++)
{
if (a[i] < a[j])
{
m = a[i];
a[i] = a[j];
a[j] = m;
}
}
PrintArr(a, n);
}
void PrintArr(int a[], int n)
{
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}
1120: 最值交换
C
#include<stdio.h>
int MinIndex(int a[], int n);
int MaxIndex(int a[], int n);
void PrintArr(int a[], int n);
int main()
{
int m,n, a[10],min,max;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
min = MinIndex(a, n);
m = a[min];
a[min] = a[0];
a[0] = m;
max = MaxIndex(a, n);
m = a[max];
a[max] = a[n-1];
a[n-1] = m;
PrintArr(a, n);
}
void PrintArr(int a[], int n)
{
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}
int MinIndex(int a[], int n)
{
int min,t=0;
min = a[0];
for (int i = 0; i < n; i++)
{
if (min > a[i])
{
min = a[i];
t = i;
}
}
return t;
}
int MaxIndex(int a[], int n)
{
int max, t = 0;
max = a[0];
for (int i = 0; i < n; i++)
{
if (max < a[i])
{
max = a[i];
t = i;
}
}
return t;
}
1121: 电梯
C
#include<stdio.h>
int main()
{
int a[1000], n, t = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
{
if (i == 0)
t += (a[0]) * 6 + 5;
else if (a[i] > a[i - 1])
t += (a[i] - a[i - 1]) * 6 + 5;
else if (a[i] < a[i - 1])
t += (a[i - 1] - a[i]) * 4 + 5;
else if (a[i] == a[i - 1])
t += 5;
}
printf("%d", t);
}
1122: 小明的调查作业
C
#include<stdio.h>
int xiangtonggeshu(int a[],int n);
void paixv(int a[], int n, int t);
void shanchu(int a[], int n);
int main()
{
int a[1000],n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
shanchu(a, n);
}
int xiangtonggeshu(int a[], int n)
{
int t=0;
for (int i = 0; i < n; i++)
if (a[i]>=0)
t += 1;
return t;
}
void shanchu(int a[], int n)
{
int m;
for (int i = 0; i < n; i++)
{
for (int j = i+1; j < n; j++)
{
if (a[i] == a[j]&&a[i]>=0)
{
for (int k = j; k < n; k++)
{
a[k] = a[k + 1];
}
j -= 1;
n -= 1;
}
}
}
int t;
t = xiangtonggeshu(a, n);
printf("%d\n", t);
paixv(a, n, t);
}
void paixv(int a[], int n, int t)
{
int m;
for(int i=0;i<t;i++)
for(int j=0;j<t;j++)
if (a[i] < a[j])
{
m = a[i];
a[i] = a[j];
a[j] = m;
}
for (int p = 0; p < t; p++)
printf("%d ", a[p]);
}
1123: 成绩排序
C(code1)
#include<stdio.h>
#include<string.h>
void paixv();
int a[20], n;
char b[20][2000];
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%s", b[i]);
scanf("%d", &a[i]);
}
paixv();
}
void paixv()
{
int m;
char temp[20];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
m = strcmp(b[i], b[j]);
if (a[i] > a[j])
{
m = a[j];
a[j] = a[i];
a[i] = m;
strcpy(temp, b[j]);
strcpy(b[j], b[i]);
strcpy(b[i], temp);
j--;
}
else if (a[i] == a[j]&&m < 0)
{
m = a[j];
a[j] = a[i];
a[i] = m;
strcpy(temp, b[j]);
strcpy(b[j], b[i]);
strcpy(b[i], temp);
j--;
}
}
for (int i = 0; i < n; i++)
{
{
printf("%s ", b[i]);
}
printf("%d\n", a[i]);
}
}
C(code2)
#include <stdio.h>
#include <string.h>
int main()
{
int n, fraction[21], i, j, mid;
char name[21][21], mid1[21];
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%s%d", name[i], &fraction[i]);
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (fraction[i] < fraction[j])
{
mid = fraction[i]; fraction[i] = fraction[j]; fraction[j] = mid;
strcpy(mid1, name[i]); strcpy(name[i], name[j]); strcpy(name[j], mid1);
}
if (fraction[i] == fraction[j])
if (strcmp(name[i], name[j]) > 0)
{
mid = fraction[i]; fraction[i] = fraction[j]; fraction[j] = mid;
strcpy(mid1, name[i]); strcpy(name[i], name[j]); strcpy(name[j], mid1);
}
}
}
for (i = 0; i < n; i++)
printf("%s %d\n", name[i], fraction[i]);
return 0;
}
1124: 两个有序数组合并
C
#include<stdio.h>
int m, n, a[1000001], b[1000001], i, c[2000003], p=0, q=0;
int main()
{
scanf("%d", &m);
for (i = m-1; i >= 0; i--)
{
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &b[i]);
}
for (i = 0; i < m + n;i++)
{
if (a[p] > b[q])
{
c[i] = a[p];
p++;
}
else
{
c[i] = b[q];
q++;
}
}
for (i = 0; i < m + n; i++)
{
printf("%d ", c[i]);
}
}
1125: 上三角矩阵的判断
C
#include<stdio.h>
int IsUpperTriMatrix(int a[][11], int n);
int main()
{
int m, a[11][11];
scanf("%d", &m);
for(int i=0;i<m;i++)
for (int j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
}
m = IsUpperTriMatrix(a, m);
if (m)
printf("YES");
else
printf("NO");
}
int IsUpperTriMatrix(int a[][11], int n)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
if (j < i)
if (a[i][j] != 0)
return 0;
}
return 1;
}
1126: 布尔矩阵的奇偶性
C
#include<stdio.h>
int BalanceMatrix(int a[][111], int n);
int X, Y;
int main()
{
int m, a[111][111];
scanf("%d", &m);
for(int i=0;i<m;i++)
for (int j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
}
m = BalanceMatrix(a, m);
if (m == 1)
printf("OK");
else if (m == 2)
printf("Change bit(%d,%d)",X,Y);
else
printf("Corrupt");
}
int BalanceMatrix(int a[][111], int n)
{
int t, x=-1, y=0,r=0;
for (int i = 0,j; i < n; i++)
{
t = 0;
for (j = 0; j < n; j++)
{
t += a[i][j];
}
if (t % 2 != 0)
{
X = i;
r++;
}
if (r == 2)
{
return -1;
}
}
for (int j = 0, i; j < n; j++)
{
t = 0;
for (i = 0; i < n; i++)
t += a[i][j];
if (t % 2 != 0)
{
Y = j;
y++;
}
if (y == 2)
return -1;
}
if (r == y && r == 1)
{
return 2;
}
if (r == 1 && y == 0 || y == 1 && r == 0)
{
return -1;
}
return 1;
}
1127: 矩阵乘积
C
#include<stdio.h>
int main()
{
int m, p, n, a[11][11], b[11][11], c[11][11],t=0,x=0,y=0;
scanf("%d %d %d", &m, &p, &n);
for (int i = 0, j; i < m; i++)
for (j = 0; j < p; j++)
scanf("%d", &a[i][j]);
for (int i = 0, j; i < p; i++)
for (j = 0; j < n; j++)
scanf("%d", &b[i][j]);
for (int i = 0, j,k; i < m; i++)
{
for (k = 0; k < n; k++)
{
for (j = 0; j < p; j++)
{
t += a[i][j] * b[j][k];
}
c[x][y] = t;
y++;
if (y == n)
{
x++;
y = 0;
}
t = 0;
}
}
for (int i = 0, j; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", c[i][j]);
}
printf("\n");
}
}
1128: 课程平均分
C
#include<stdio.h>
int main()
{
int m, n;
double ans=0,a[1002][20];
scanf("%d%d", &m, &n);
for (int i = 0, j; i < m; i++)
for (j = 0; j < n; j++)
scanf("%lf", &a[i][j]);
for (int j = 0, i; j < n; j++)
{
ans = 0;
for (i = 0; i < m; i++)
{
ans += a[i][j];
}
printf("%.2f ", ans / m);
}
}
1129: 第几天
C
#include<stdio.h>
int a[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};
int main()
{
int year,month,day,ans=0,pd;
scanf("%d-%d-%d",&year,&month,&day);
if(year%4==0&&year%100!=0||year%400==0)
pd=0;
else
pd=1;
for(int i=1;i<month;i++)
ans+=a[pd][i];
ans+=day;
printf("%d",ans);
}
1130: 杨辉三角
C
#include<stdio.h>
int main()
{
int n,a[31][31]={0};
scanf("%d",&n);
a[0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d ",a[i][j]);
}
printf("\n");
}
}
1131: 最常用字符
C
#include<stdio.h>
int a[26]={0},t,m;
char b[105]={0};
int main()
{
gets(b);
for(int i=0;b[i]!='\0';i++)
{
if((int)b[i]==32)
{
continue;
}
if(b[i]>='a'&&b[i]<='z')
a[b[i]-'a'+1]++;
else
a[b[i]-'A'+1]++;
}
t=a[1];
m=1;
for(int i=1;i<=26;i++)
if(t<a[i])
{
t=a[i];
m=i;
}
printf("%c",m+96);
}
1132: 数字字符统计(多实例)
C
#include<stdio.h>
int main()
{
char a[1005];
int n, t;
scanf("%d\n", &n);
for (int x = 1; x <= n; x++)
{
gets(a);
t = 0;
for (int i = 0; a[i] != '\0'; i++)
if (a[i] >= '0' && a[i] <= '9')
t++;
printf("%d\n", t);
}
}
1133: 单词个数统计
C
#include<stdio.h>
#include<string.h>
int main()
{
char str[1000];
int i,len,count;
gets(str);
count=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=' '&&str[i+1]==' ')
count++;
}
len=strlen(str);
if(str[len-1]!=' ')
count++;
printf("%d\n",count);
return 0;
}
1134: 字符串转换
C
#include<stdio.h>
int he(long long int t);
char a[112],b[112];
int j=0,c[112],n=0;
long long int t;
int main()
{
gets(a);
for(int i=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b[j]=a[i];
j++;
}
}
for(int i=0;i<j;i++)
{
c[i]=(int)b[i]-48;
}
t=he(c[0]);
printf("%lld",t*2);
}
int he(long long int t)
{
n++;
if(n<j)
{
t*=10;
t=he(t+c[n]);
}
return t;
}
1135: 算菜价
C
#include<stdio.h>
int main()
{
double w, p,ans=0;
while (scanf("%*s%lf%lf", &w, &p) != EOF) {
ans += w * p;
}
printf("%.1f", ans);
}
1136: 首字母变大写
C
#include<stdio.h>
#include<ctype.h>
int main()
{
int i=0;
char a[105];
gets(a);
a[0]=toupper(a[0]);
while(a[i]!='\0')
{
if(a[i]==' '&&a[i+1]!=' ')
a[i+1]=toupper(a[i+1]);
i++;
}
puts(a);
}
1137: 查找最大元素
C
#include<stdio.h>
#include<ctype.h>
int main()
{
int i=0,t[201]={0},m=0;
char a[205],max;
gets(a);
max=a[0];
t[m]++;
while(a[i]!='\0')
{
if(max<a[i])
{
for(int k=0;k<201;k++) t[k]=0;
t[i]=1;
max=a[i];
}
else if(max==a[i])
{
t[i]=1;
}
i++;
}
i=0;
while(a[i]!='\0')
{
printf("%c",a[i]);
if(t[i])
printf("(max)");
i++;
}
}
1138: C语言合法标识符
C
#include"stdio.h"
main()
{
int i=1;
char ch[55];
gets(ch);
if(ch[0]>='a'&&ch[0]<='z'||ch[0]>='A'&&ch[0]<='Z'||ch[0]=='_')
{while(ch[i]!='\0')
{
if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z'||ch[i]>='0'&&ch[i]<='9'||ch[i]=='_')
{
i++;
continue;
}
else
{
printf("no");
return 0;
}
}
printf("yes");
}
else
printf("no");
}
1139: 输出最短字符串
C
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,m=0,t;
scanf("%d\n",&n);
char a[n][1001];
for(i=0;i<n;i++)
gets(a[i]);
int s=1;
t=strlen(a[0]);
for(i=1;i<n;i++)
{
if(strlen(a[i])<t)
{
t=strlen(a[0]+1001*i);
m=i;
}
}
puts(a[m]);
return 0;
}
1140: 小数点后第n位(多实例)
C++
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
int n, i, j,l;
scanf("%d%*c", &n);
while (n--)
{
cin >> a >> i;
l = a.size();
j = 0;
while (a[j] != '.' && j < l) j++;
if (l-j-1<i)
cout << 0;
else
cout << a[j + i] << endl;
}
}
1141: 进制转换
C++
#include<cstdio>
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
void convert(long long int n, char str[]);
int main()
{
long long n;
char str[1000]={'\0'};
cin>>n;
if(n!=0)
convert(n, str);
else
printf("0");
}
void convert(long long int n, char str[])
{
size_t l = 1;
for (int i = 0; pow(2, i) <= n; i++)
{
l = i;
}
for (int i = l; i >= 0; i--)
{
str[i] = n % 2 + 48;
if (n % 2)
n /= 2;
else
n = (n + 1) / 2;
}
cout << str << endl;
}
1142: 二进制数的大小
C
#include<stdio.h>
#include<math.h>
int a[3] = { 0 }, i;
void bToD(char str[])
{
int j = 0;
while (str[j] != '\0')
{
a[i] *= 2;
a[i] += (int)(str[j] - 48);
j++;
}
}
int main()
{
char str[32];
for (i = 0; i < 3; i++)
{
scanf("%s", str);
bToD(str);
}
int t = a[0];
if (a[0] > a[1])
{
a[0] = a[1];
a[1] = t;
}
if (a[0] > a[2])
{
t = a[0];
a[0] = a[2];
a[2] = t;
}
if (a[1] > a[2])
{
t = a[1];
a[1] = a[2];
a[2] = t;
}
for (i = 0; i < 3; i++)
printf("%d ", a[i]);
}
1143: 最大值—多种进制
C++
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int KToD(char str[], int k);
int main()
{
char str[10000];
int n, t,max=0,m;
cin >> n;
getchar();
while (n--)
{
scanf("%s%d", str, &t);
m = KToD(str, t);
if (m > max)
max = m;
}
printf("%d\n",max);
}
int KToD(char str[], int k)
{
int i = 0, l, ll, ans = 0;
ll =strlen(str);
//cout << ll << endl;
l = ll;
for (i = 0; i < ll; i++)
{
ans += (str[--l]-'0') * pow(k, i);
}
return ans;
//函数返回k进制数str对应十进制整数
}
1144: 多种进制
C++
#include<iostream>
#include<cmath>
using namespace std;
void dToK(int n, int k, char str[]);
int main()
{
int a;
char str[10000];
cin >> a;
dToK(a, 2, str);
dToK(a, 3, str);
dToK(a, 7, str);
dToK(a, 8, str);
}
void dToK(int n, int k, char str[])
{
int t = log(n) / log(k);
for (int i = t; i >= 0; i--)
{
str[i] =n % k+48;
n /= k;
}
for (int i = 0; i <= t; i++)
putchar(str[i]);
putchar('\n');
}
1145: 有问题的里程表(2)
C
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,m,sum=0;
int i;
scanf("%d",&n);
for(i=0;i<9;i++)
{
m=n%10;
if(m>4)
sum+=(m-1)*pow(9,i);
else
sum+=m*pow(9,i);
n=n/10;
}
printf("%d",sum);
//system("pause");
return 0;
}
1146: 吃糖果
C++
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
int t,n,a[1000005],sum;
int main()
{
cin>>t;
while(t--)
{
sum=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
sort(a,a+n);
if(sum-a[n-1]>=a[n-1]-1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
1147: 查找子数组
C++
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[105],b[105];
int main()
{
bool pd=0;
int m,n;
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<m;i++) cin>>b[i];
for(int i=0;i<n;i++)
{
if(a[i]==b[0])
{
for(int j=0;j<m;j++)
{
pd=0;
if(a[i+j]!=b[j])
{
pd=1;
break;
}
}
if(!pd)
{
cout<<i<<endl;
return 0;
}
}
}
cout<<"No Answer"<<endl;
return 0;
}
1148: 组合三位数之一
C
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int m,n,k,q,w,e;
int a[11]={0};
int find;int i;
for(m=13;m<32;m++)
{
for(n=m+1;n<32;n++)
{
for(k=n+1;k<32;k++)
{
q=m*m;
while(q>0)
{
a[q%10]++;
q/=10;
}
w=n*n;
while(w>0)
{
a[w%10]++;
w/=10;
}
e=k*k;
while(e>0)
{
a[e%10]++;
e/=10;
}
find=1;
for(i=1;i<10;i++)
{
if(a[i]!=1)
{
find=0;
break;
}
}
if(find==1)
{
printf("%d %d %d\n",m*m,n*n,k*k);
}
memset(a,0,sizeof(a));
}
}
}
return 0;
}
1149: 组合三位数之二
C++
#include<iostream>
#include<cstring>
using namespace std;
bool pd[10];
bool pdit(int n)
{
while (n)
{
if (pd[n % 10])
{
return 0;
}
else
{
pd[n % 10] = 1;
n /= 10;
}
}
return 1;
}
void init()
{
memset(pd, 0, sizeof pd);
pd[0] = 1;
}
int main()
{
for (int i = 123; i <= 333; i++)
{
init();
if (pdit(i) && pdit(i * 2) && pdit(i * 3))
{
printf("%d %d %d\n", i, 2 * i, 3 * i);
}
}
}
1150: 数数多少个整数
C++
#include<iostream>
int main()
{
int ans=0;
char a;
bool pd=0;
while(scanf("%c",&a),a!='\n')
{
if(!pd)
{
if(a>='0'&&a<='9')
{
pd=1;
ans++;
}
}
else
{
if(a<'0'||a>'9')
pd=0;
}
}
std::cout<<ans<<std::endl;
//system("pause");
}
待更