您现在的位置是:首页 >

求整数解问题 C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙

火烧 2021-06-20 03:26:56 1059
C++ 求解一道题 给出任意一个整数 ,计算出 从1到 中所有数中1出现的次数 求大神帮忙 C++ 求解一道题 给出任意一个整数 ,计算出 从1到 中所有数中1出现的次数 求大神帮忙重点学习取出每一位

C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙  

C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙

重点学习取出每一位的过程,莫只是抄了了事。

#include <iostream.h>int main (){int n;cout<<"pls input n";cin>>n;int s[10]={0};存储每个数字出现个数for(int i=1;i<=n;i++){连续从后边取出一位进行计数int shang,yushu;shang=i;while(shang!=0){yushu=shang%10;s[yushu]++;shang=shang/10;}}输出结果cout<<i<<":"<<s[1]<<endl;}

定义一程序求出任意一整数中“4”出现的次数,并求出整数400-499中所有“4”的个数

代码: #include <stdio.h>
int num_of_4(int n);void main()
{
int n,i,sum=0;
printf("请输入一个整数:n");
scanf("%d",&n);
printf("%d中4出现的次数是:%dn",n,num_of_4(n));
for(i=400;i<=499;i++)
{
sum=sum+num_of_4(i);
}
printf("400-499中所有4的个数是:%dn",sum);
}int num_of_4(int n)
{
int num=0;
while(n!=0)
{
if(n%10==4)
num++;
n=(int)(n/10);
}
return num;
} 图:

输出一个整数n,输出n的位数中2出现的次数。

#include<stdio.h>
void main() { int x,n;
scanf("%d",&x); n=0; while ( x ) { if ( x%10==2 ) n++; x/=10; } printf("%dn",n);
}

给出一个整数n,其中n小于等于1000.请求出1~n中所有的素数的个数

var
n,i,j,s:integer;
x:boolean;
begin
read(n);
s:=2;
x:=true;
if n<=3 then s:=n-1
else
for i:=4 to n do
begin
for j:=2 to trunc(sqrt(i)) do
if (i mod j=0) then begin x:=false;quit;end;
if x then s:=s+1;
x:=true;
end;
write(s);
end.
【【不清楚,再问;满意, 请采纳!祝你好运开!】】

求整数解问题 C++ 求解一道题 给出任意一个整数n,计算出 从1到n中所有数中1出现的次数 求大神帮忙

给出一个整数n,其中n小于等于100.然后给出n个数,在这n个数中,其中一个数出现的次数是超过n的一半

假定输入的每一个数不超过10000:
var a:array[1..10000]of integer;
x,i,s:integer;
begin
readln(n);
for i:=1 to n do
begin
read(x); inc(a[x]);
end;
for i:=1 to 10000 do
if a[i]>(n +1) div 2 then break;
if a[i]>(n +1) div 2 then writeln('It is ',a[i])
else writeln('No such number!');
end.

从键盘输入任意一个整数n,求1×2×3×……×n

#include<stdio.h>
void main()
{
    int n,i,sum=1;
    printf("input n:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        sum*=i;
    printf("sum=%dn",sum);
}

用C++编程:任意一个整数n01,然后反序输出该整数

#include <iostream.h>
int f(int n)
{
if(n<10)
return n;
else
cout<<(n%10);
return f(n/10);

}
void main()
{
int a;
cin>>a;
cout<<f(a)<<endl;
}

任意给定一个大于1的整数n,设计一个算法求出n的所有因数。

n的因数,设为x,可得n=kx,k为常数,明显,k也为n的因数。所以求n的因数,可以求枚举1到n^0.5的所有数,判断这个数是否能被n除尽,那么n/x必然也为n的因数,且除了x^2=n的特殊情况,其他的x和n/x都不相等。为了看起来舒服,可以排序一下。
c语言代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp (const void *aa,const void *bb) 比较函数
{
return *(int *)aa-*(int *)bb;
}
int main()
{
int x,n,i,=0;
int num[10000];
scanf ("%d",&n);
for (x=1;x<=sqrt(n);++x)
{
if (n%x==0) {num[++]=x;if (x!=(n/x))num[++]=n/x;}
}
qsort(num,,sizeof(num[0]),cmp);
for (i=0;i<;++i)
printf ("%d ",num[i]);
printf ("n");
return 0;
}
这个算法并不高效果,不过算10亿以内的整数n,肯定能不到1秒出解的

伪代码如下
算法开始:
执行后面的内容直到n=1为止
(
令i从2取到[√n]
如果(i|n),则(输出i,令n=原来的n除以i,退出"令i从2取到[√n]"这个循环)
)
算法结束.
行了
---------------------
这样还深奥?真是让人没办法的lz啊。。
那看这个:
第一步:获得n的值
第二步:令i为1
第三步:把i的值加上1
第四步:如果i能整除n则继续执行第五步,否则跳到第六步
第五步:令n的值为[n除以i],并且显然i是n的因数,输出i,跳到第七步
第六步:如果i<[√n],则跳到第三步
第七步:如果n大于1,那么跳到第二步

  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码