数字统计、h0074. 金币、计算区间素数和、连续因子、有多少香蕉

数字统计

请统计某个给定范围 [L, R] 的所有整数中,数字 2 出现的次数。 比如给定范围 [2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1 次,在数 21中出现 1次,在数 22中出现 2次,所以数字 2在该范围内一共出现了 6 次。

输入格式:

输入共 1 行,为两个正整数 L 和 R(1≤L≤R≤10000),之间用一个空格隔开。

输出格式:

输出共 1 行,表示数字 2 出现的次数。

输入样例:

2 22

输出样例:

6
#include <stdio.h>
#include <math.h>
 
int main()
{
    int a,b,ans=0;
    scanf("%d%d",&a,&b);
    for(int i=a;i<=b;i++){
        int c=i;                           
        while(c!=0){
            if(c%10==2)ans++;
            c/=10;
        }
    }
    printf("%d",ans);
}

h0074. 金币

国王用金币支付他忠诚的骑士。在服役的第一天,骑士会收到一枚金币。在接下来的两天(服务的第二天和第三天)中的每一天,骑士都会收到两个金币。在接下来的三天(服役的第四天、第五天和第六天)的每一天,骑士都会收到三个金币。在接下来的四天(服役的第七天、第八天、第九天和第十天)中的每一天,骑士都会收到四枚金币。这种支付模式将无限期持续:在连续 N 天的每一天收到 N 个金币后,骑士将在接下来的 N+1 天的每一天收到 N+1 个金币,其中 N 是任意正整数。

您的程序将确定在任何给定天数内(从第 1 天开始)支付给骑士的金币总数。

输入格式:

输入包含至少 1 行,但不超过 21 行。输入文件的每一行(除了最后一行)都包含问题的一个测试用例的数据,由一个整数(在 1..10000 范围内)组成,代表天数。输入的结束由包含数字 0 的行表示。

输出格式:

每个测试用例只有一行输出。这一行包含从对应的输入行算起的天数,后跟一个空格和在给定的天数内支付给骑士的金币总数,从第 1 天开始。

输入样例:

23
11
6
7
0

输出样例:

23 105
11 35
6 14
7 18
#include<stdio.h>
int main() 
{
	int day;
	scanf("%d", &day);
	while (day != 0) 
	{
		int a = 0, money = 0;
		for (int i = 1; a < day; i++)
		 {
			a += i;
			for (int j = 1; j <= i && a <= day; j++) 
			{
				money += i;
			}
			if (a > day)
			 {
				money += (day - (a - i)) * i;
			}
		}
		printf("%d %d\n", day, money);
		scanf("%d", &day);
	}
	return 0;
}

 

计算区间素数和

杨老师正在上《离散数学》课程的“数论”内容,讲授素数的知识。素数又称为质数。一个大于1的整数p是素数,当且仅当p只能被1和自身整除。很显然,2是最小的素数。他想设计一个程序,可以计算整数 m 和 n 之间的所有素数之和。

输入格式:

输入两个整数 m,n, 题目不保证 m≤n,但是保证 0≤m≤20000,0≤n≤20000。

输出格式:

输出 m 和 n 之间的所有素数的和。

输入样例01:

在这里给出一组输入。例如:

10 0

输出样例01:

在这里给出相应的输出。例如:

17

输入样例02:

在这里给出一组输入。例如:

100 200

输出样例02:

在这里给出相应的输出。例如:

3167

这道题一共六个样例,做对了5个,满分十分,得了8分。。。

#include <stdio.h>
#include <math.h>
int prime(int p);
int main()
{
    int m, n, p, sum;
    scanf("%d %d", &m, &n);
    if (m > n) {
        int t = m;
        m = n;
        n = t;
    }
    for (p = m; p <= n; p++) {
        if (prime(p) != 0)
            sum += p;
    }
    printf("%d", sum);
    return 0;
}

int prime(int p)
{
    int ret = 1;
    if (p > 1)
    {
        for (int i = 2; i < p; i++)
        {
            if (p % i == 0)
            {
                ret = 0;
                break;
            }
        }
    }
    else
    {
        ret = 0;
    }
    return ret;
}

 连续因子

一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:

输入在一行中给出一个正整数 N(1<N<231)。

输出格式:

首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。

输入样例:

630

输出样例:

3
5*6*7

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>


int main()
{
 int num;
 scanf("%d",&num);
 int start=0,longth=0;

 for(int i=2;i<sqrt(num)+1;i++)
    {
        int sq = i,gs = 0,n = num;
        for(;n%sq==0;gs++,sq++)
            n = n/sq;
        if(gs>longth)
        {
            start = i;
            longth = gs;
        }
    }
    if(longth!=0)
    {
        printf("%d\n",longth);
        for(int i=0;i<longth-1;i++)
            printf("%d*",start+i);
        printf("%d",start+longth-1);
    }
    else
        printf("1\n%d",num);

 return 0;
}

有多少香蕉

以前有这么一个益智游戏,沙滩上有n个猴子和一堆香蕉,晚上有一只猴子偷偷起来把香蕉分成n份,自己拿走了一份,多出来一根,扔进了海里,然后去睡觉了,后面所有的猴子都进行了同样的操作,分成n份,扔掉一根,拿走一份。问最少需要多少香蕉才能让所有猴子都完成该操作。(最后一只猴子扔掉后可以拿走0个,也算是n份均分)给定一个整数m,表示猴子的个数,题目要求输出最初的香蕉数。题目保证有解。

输入格式:

第一行输入n,后面依次输入n个数m。

输出格式:

所有输出在一行内完成,行末不能有多余空格,最后无回车结尾

输入样例:

第一行的2表示有2个m输入。第二行第三行是输入数据

2
2
3

输出样例:

3 25
#include <stdio.h>
#include <math.h>
int main()
{
  int n,i,j,k=0;
  double xiangjiao;
  scanf("%d",&n);

  double m[n];
  for(i=0;i<n;i++)
    scanf("%lf",&m[i]);
    for(j=0;j<n;j++){
    xiangjiao=pow(m[j],m[j])-m[j]+1;
    printf("%.f",xiangjiao);
    if (k!=n-1){
       printf(" ");k++;}
    }
    return 0;
}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名之以父

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值