- 输入一个1000的正整数n,求1到n的平方和(行尾带回车)
#include<stdio.h>
int main(){
int n,sum,i;
sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=sum+i*i;
}
printf("%d\n",sum);
}
- 叙古拉斯猜想:对于每一个大于1的数,如果是奇数,将其乘3加1,如果是偶数,将其除以2,最终得到1
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
printf("%d\n");
while(n!=1){
if(n%2!=0){
n=n*3+1;
}
else{
n=n/2;
}
printf("%d\n",n);
}
}
- 输出100以内约数个个数为4的数
#include<stdio.h>
#include<math.h>
int getYueNum(int n){
int i,sum;
sum=0;
for(i=1;i*i<n;i++){
if(n%i==0)
sum+=2;
}
if(i*i==n)
sum++;
return sum;
}
int main(){
int i;
i=10;
while(i<100){
if(getYueNum(i)==4)
printf("%d\n",i);
i++;
}
}
- 输入n,从小到大输出具有n个约数的所有两位数,每个数占一行
#include<stdio.h>
int getYueNum(int n){
int i,sum;
sum=0;
for(i=1;i*i<n;i++){
if(n%i==0)
sum+=2;
}
if(i*i==n)
sum++;
return sum;
}
int main(){
int i,n;
i=10;
scanf("%d",&n);
while(i<100){
if(getYueNum(i)==n)
printf("%d\n",i);
i++;
}
}
- 韩信带了一些士兵(人数小于等于105),他想知道士兵的人数,先让士兵3人站一排,最后余两人;5人站一排,最后余1人,7人站一排,最后余4人,问有多少士兵
#include<stdio.h>
int main(){
int i;
for(i=1;i<105;i++){
if((i%3==2)&&(i%5==1)&&(i%7==4))
printf("%d\n",i);
else{
continue;
}
}
}
- 韩信带了一些士兵(人数小于等于105),他想知道士兵的人数,先让士兵3人站一排,最后余a人;5人站一排,最后余b人,7人站一排,最后余c人,问有多少士兵
输入三个非负整数a,b,c,其中a小于3,b小于5,c小于7
输出士兵的人数
#include<stdio.h>
int main(){
int a,b,c,i;
scanf("%d %d %d",&a,&b,&c);
for(i=1;i<105;i++){
if((i%3==a)&&(i%5==b)&&(i%7==c))
printf("%d\n",i);
else{
continue;
}
}
}
- 袋子里有若干个球,佳佳每次拿出其中的一半再放回去一个球,一共这样做了5次,袋子里还有3个球,问原来袋子中有多少个球?
#include<stdio.h>
int main(){
int i;
int n=3;
for(i=0;i<5;i++){
n=(n-1)*2;
}
printf("%d",n);
}
- 袋子里有若干个球的问题,聪明的佳佳很快就算出来了,但是他想写一个程序解决这个问题,并想把问题扩展到一般情况:每次拿出其中的一半再放回去一个球,一共这样做了n次,袋子里还有m个球。问原来袋子中有多少个球?
输入:输入两个正整数n和m,
输出:袋子里原来有多少个球
#include<stdio.h>
int main(){
int i,m,n;
scanf("%d %d",&n,&m);
for(i=0;i<n;i++){
m=(m-1)*2;
}
printf("%d\n",m);
}
- 先输入一个正整数n,再输入n个整数,求它们的和。
#include<stdio.h>
int main(){
int n,sum,i;
int a[20];
sum=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("%d\n",sum);
}
- 先输入一个正整数n,然后输入n个整数,输出其最小值。
#include<stdio.h>
int main(){
int a[20];
int n,i,minnum;
scanf("%d",&n);
scanf("%d",&a[0]);
minnum=a[0];
for(i=1;i<n;i++){
scanf("%d",&a[i]);
if(a[i]<minnum)
minnum=a[i];
}
printf("%d\n",minnum);
}
- 输入一个正整数,将其各个位上的数字按从低位到高位的顺序单独输出,每个数字占一行。提示可用两种除法/和%,用于整数时第一种除法的结果是商的整数部分,第二种除法的结果是余数,例如:123/10=12,123%10=3)
输入:一个正整数。
输出:将其各个位上的数字按从低位到高位的顺序单独输出,每个数字占一行。
#include<stdio.h>
int main(){
int n,i,j;
int a[10];
i=0;
scanf("%d",&n);
while(n){
a[i]=n%10;
n=n/10;
i++;
}
for(j=0;j<i;j++){
printf("%d\n",a[j]);
}
return 0;
}
- 完全背包问题
#include<stdio.h>
int w[1001],v[1001];
int dp[1001][1001];
int main(){
int n,c,i,j,k;
scanf("%d %d",&n,&c);
for(i=1;i<=n;i++){
scanf("%d",&w[i]);
}
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
}
for(i=1;i<=n;i++){
for(j=1;j<=c;j++){
for(k=0;k*w[i]<=j;k++){
if(dp[i][j]<dp[i-1][j-k*w[i]]+k*v[i])
dp[i][j]=dp[i-1][j-k*w[i]]+k*v[i];
}
}
}
printf("%d\n",dp[n][c]);
}