1 + 22 + 333 + ... +求めて入力nは、 NNN ... N。 (コメントを書くことを忘れないでください)
题解一
#include <stdio.h>
int main()
{
int i,j,n,m,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=0;
for(j=1;j<=i;j++)
m=m*10+i;
printf("%d+",m);
s+=m;
}
printf("\b=%d",s);
}
方法二
#include<stdio.h>
#include<math.h>
int main()
{
int m=0, n,i,j,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=0;j<=i-1;j++)
{
m=i*pow(10,j);
printf("%d+",m);
sum+=m;
}
printf("\b=%d\n",sum);
}
5. それは合計と正確に等しい場合、いくつかの要因が、この数は完全数と呼ばれています。すべては1000年の数以内に終了する必要があります。
#include "stdio.h"
main()
{
static int k[10];
int i, j, n, s;
for (j = 2; j<1000; j++) //3
{
n = -1;
s = j;
for (i = 1; i<j; i++)
{
if ((j%i) == 0)
{
n++;
s = s - i;
k[n] = i;
}
}
if (s == 0)
{
printf("%d是一个完数=",j);
for (i = 0; i<n; i++)
printf("%d+",k[i]);
printf("%d\n",k[n]);
}
}
}
#include<stdio.h>
int main()
{
int i,sum,n;
for(n=1;n<=1000;n++)
{
sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{
sum=sum+i;
}
}
if(n==sum)
{
printf("%d its factors are ",n);
for(i=1;i<n;i++)
{
if(n%i==0)
{
printf("%d ",i);
}
}
printf("\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
int i,j,sum;
for (int i = 2; i <= 1000; i++)
{ //从2到1000的数
sum = 0; //因子总和
for (int j = 1; (j * j) <= i; j++)
{ //j做除数,√n复杂度,减少一半的计算量
if (i % j == 0)
{ //可以整除,为其因子
sum = j + (i / j) + sum; //因子之和
}
}
if ((sum - i) == i)
printf("%d\n",i); //因子之和减去其本身(1*i也为其因子)如果等于这个数本身,则为完数
}
}
7.プログラミングは、kがキーボードから入力され、そしてk番目の13又は17及び自然数割り切れる(単に実際の数、ない場合)10内で計算された最大を出力します。
#include <stdio.h>
int main()
{
int k,i,count,s;
count=0;
s=0;
scanf("%d",&k);
while(k>=1&&count<10)
{
if((k%13==0)||(k%17==0))
{
printf("%d+",k);
s=s+k;
count++;
}
k--; //最大的10个 由100开始递减 能保证前十个数最大
}
printf("\b=%d\n",s);
}
入力の正の整数nと入力nは整数であり、n個の整数の平均値。
#include "stdio.h"
int main()
{
int i,n,k,sum=0;
printf("请输入n:");
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d",&k);
sum+=k;
}
printf("%.2f\n",1.0*sum/n);
}
9.ライトプログラム計算:S = 1 +(1 + 2)+(1 + 2 + 3)+ ... +(1 + 2 + ... + N)。
#include <stdio.h>
int main()
{
int i,n,s,h;
s=0;
h=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s+=i;
h+=s;
}
printf("%d\n",h);
}
#include <stdio.h>
int main()
{
int i,j,sum=0,n=0;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
for (j=1;j<=i;j++)
{
sum+=j;
}
}
printf("%d\n",sum);
return 0;
}
* 10は、正の整数mを入力し、以下の条件を満足シーク最大N :. 12 + 22 + 32 + ... +n2≤mあります。
#include <stdio.h>
int main()
{
int n,s,m;
n=1;
s=0;
scanf("%d",&m);
while(s<=m)
{
s+=n*n;
n++;
}
printf("%d\n",n-2);
return 0;
}
* 1,3,2入力、出力障害場合、11は、入力nは整数、例えば1,2,3入力、出力順序として、順序付けられたか否かを判定する。
#include<stdio.h>
int main()
{
int t,x,flag=1,n;
n=10; //输入十个数
scanf("%d",&t);
for(int i =1;i<n;i++)
{
scanf("%d",&x);
if(x<t)
{
flag=0;
}
t=x;
}
if(flag==0)
{
printf("无序");
}
else
{
printf("有序");
}
}
12.ウサギの再生問題:誕生は月額ウサギのペアを1つ生まれた後に有名なイタリアの数学者フィボナッチは、最初の3ヶ月から、ウサギのペアを疑問を提起しています。月はウサギの一組を出産した後にバニーは3ヶ月まで育ちます。何のウサギが死んでいない、nは私が出産の最初の月のウサギのペアを要求したときにのみ、少なくとも最初の数ヶ月掛けすることに達していると仮定すると、法律をクリックして?プログラム入力N、および月の対応する番号を出力します。
#include <stdio.h>
int main()
{
int a=1,b=1,n,t=1,i=2;//a是第一个数,b是 第二个数,前面直接定义了 ,i定义为二是为后面当n不等于1也就是说 最少一个月过去了。
//t是两个数的转换,用来保存前一个数。
scanf("%d",&n);//n对,就是兔子的数量
if(n==1)//用 一个if来判断如果n=1,就直接输出 。
{
printf("1");
}
else
{
while(n>t)
{
i++;//用来 计数的
t=a+b;
b=a;
a=t;
}
printf("%d",i);
}
return 0;
}
13〜65535のすべてのメルセンヌの出力。指は正の整数、2N-1である、請求指数nは素数、数が素数である場合に2N-1と呼ばれ、メルセンヌ素数です。(ネストされたループ)
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a,b=0,t=0;
for(a=2;a<=16;a++) //2^16=65536
{
b=pow(2,a)-1;
for(i=2;i<b;i++)
{
if(b%i==0)
{
t=1;
break;
}
}
if(t==0)
printf("%d\n",b);
t=0;
}
return 0;
}
14.正の整数を入力して、N、合計= 20 + 21 + 22 + ... 2Nを算出機能POWありません。
#include <stdio.h>
int main()
{
int s , t=1;
int i,n;
s=0;
scanf("%d",&n);
for(i = 0; i <= n; i ++)
{
s+=t;
t*=2;
}
printf("%d\n", s);
return 0;
}
15ブラックホールの数。トラップ番号は変換特性の奇妙な種類を持つ整数であるとしても知られています。制限することによって、同じ障害、任意の数の整数は、常に一定数を有するか、またはこれらの数字の一部がブラックホールの数であり、動作を「差分再配置しました」。有限の後に再配置の再構成の最小数を引いた数の桁の最大数であり、最終的に495を取得する動作を「再配置は、差分」。3桁の297に関しては:
各行の多額に小で数3つの位置= 279 972,972-279及び693、一度
再び再配列ビット数各行の多額の小型三に963,963-369及び369 = 594、一度
もう一度459に一旦各行の多額に小さなで数3の位置を再配置し、954,954-459 = 495
プログラム検証、任意の3桁の数字、再配置プロセスの出力。
#include <stdio.h>
int main(void) {
int n, a, b, c, t, A, B;
printf("输入一个三位数整数:");
scanf("%d",&n);
do{
/*a, b, c 分别是百位数,十位数,个位数*/
a = n/100;
b = (n%100)/10;
c = (n%10);
/* 百位数,十位数,个位数按照从大到小的顺序重排,以便下一步中求重排后的最大值A和最小值B*/
if(a<b) {
t = a; a = b; b = t;
}
if(a<c) {
t = a; a = c; c = t;
}
if(b<c) {
t = b; b = c; c = t;
}
/*从排后的最大数A与最小数B*/
A = a * 100 + b * 10 + c;
B = c * 100 + b * 10 + a;
/*将最大数与最小数的差,重新赋给变量n,以便做循环判断或下次循环使用*/
n = A - B;
/*输出过程*/
printf("%d - %d = %d\n", A, B, n);
} while(n!=495 && n!=0);
return 0;
}