1. 百元百鸡
#include <stdio.h>
int main(){
int i,j,k;
for(i = 1; i <= 100/5;i++)
for(j = 1; j <= 100/3; j++)
for(k = 3;k <= 3*100; k+=3)
if(i*5 + j*3+k/3== 100 && i+j+k == 100)
printf("%5d%5d%5d\n",i,j,k);
return 0;
}
2. 硬币兑换问题
#include <stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
int cnt = 0;
for(i = 1; i < n; i++)
for(j = 2; j < n; j+=2 )
for(k = 5; k < n; k+= 5)
if(i + j + k == n)
cnt++;
printf("count=%d\n",cnt);
return 0;
}
3. 输出图形
#include <stdio.h>
int main(){
int i,j;
for(i = 1; i <= 7; i++)//枚举数字
{
//先输出空格
for(j = 30-i; j >= 0; j--)
printf(" ");
// 输出数字
for(j = 1; j <= 2*i-1; j++)
printf("%d",i);
printf("\n");
}
for(i = 6; i > 0; i--)//枚举数字
{
for(j = 0; j <= 30-i; j++)//输出空格
printf(" ");
for(j = 1; j <= 2*i-1; j++)
printf("%d",i);
printf("\n");
}
return 0;
}
4. 7或17的倍数
#include <stdio.h>
int main(){
int idx = 0,i;
int sum = 0;
for(i = 2; i <= 200; i+= 2)
if( i % 7 == 0 || i % 17 == 0 )
{
printf("%6d",i);
idx++;
if(idx==5)
{
printf("\n");
idx = 0;
}
sum += i;
}
printf("\nsum=%d",sum);
return 0;
}
5. 水仙花数
🌝 库函数 pow 还过不了
#include <stdio.h>
#include <math.h>
//快速幂函数
int qmi(int x,int n){
int res = 1;
while(n){
if(n&1)
res *= x;
x *= x;
n>>=1;
}
return res;
}
int main(){
int n,i;
scanf("%d",&n);
// 打表
// int arr[] = {153,370,371,407,1634,8208,9794,54748,92727,93084,
// 548834,1741725,4210818,9800817,9926315};
// for(int i = 0; i < 15;i++)
// {
// if(arr[i] >= start && arr[i] < end )
// printf("%d\n",arr[i]);
// }
int start = qmi(10,n-1);
int end = start *10;
// 暴力法:用库里都 pow 只能过两个测试点 手写一个快速幂
// int start = pow(10,n-1);
// int end = pow(10,n);
int start = qmi(10,n-1);
int end = start *10;
for(i = start; i < end; i++)
{
int sum = 0;
int t = i;
while(t){
int x = t%10;
// sum += pow(x,n);
sum += qmi(x,n);
t /= 10;
}
if(sum == i)
printf("%d\n",i);
}
return 0;
}
6. 素数问题
✨ 枚举 + 判断素数
#include <stdio.h>
#include <math.h>
int main(){
int n,m,i,j;
scanf("%d,%d",&n,&m);
for(i = n; i>1 && m != 0; i--){
int flag = 1;
for(j = 2;j < i/j; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag)
{
printf("%d\n",i);
m--;
}
}
return 0;
}
7. 求序列和
#include <stdio.h>
int main(){
int n,m,i;
scanf("%d,%d",&n,&m);
int a[m+1] ;
int res = 0;
int t = 0;
for(i = 1;i <= m; i++)
{
t = t*10 + n;
a[i] = t;
}
for(i = 1; i <= m; i++)
{
res += a[i];
if(i != m)
printf("%d+",a[i]);
else
printf("%d=",a[i]);
}
printf("%d",res);
return 0;
}
9. 验证哥德巴赫猜想
🌟 枚举 1 ~ 30,找出 <i 的素数,int x = i - 此素数,判断 x 是否是素数即可
#include <stdio.h>
int st[31];
int isPrime(int x){
int i;
for(i = 2; i < x; i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int main(){
int i,j;
for(i = 6; i <= 30; i += 2)
{
for(j = 2; j <= i/2; j++)
{
if(isPrime(j)){
int x = i - j;
if(isPrime(x)){
printf("%d=%d+%d\n",i,j,x);
}
}
}
}
return 0;
}