NOI openjudge题库:小学奥数(20题)

542 篇文章 3 订阅
503 篇文章 18 订阅

1、小学奥数_7647余数相同问题

OpenJudge - 7647:余数相同问题

/*
小学奥数_7647余数相同问题
http://noi.openjudge.cn/math/7647/
*/
#include <cstdio>
#define max(a, b) (a > b ? a : b)

int main()
{
  int a, b, c;
  scanf("%d%d%d", &a, &b, &c);
  int maxn = max(max(a, b), c);
  for (int x = 2; x <= maxn; x++)
    if (a % x == b % x && b % x == c % x)
    {
      printf("%d", x);
      break;
    }
  return 0;
}


2、小学奥数_7648蓄水池水管问题

http://noi.openjudge.cn/math/7648/

小学奥数 蓄水池水管问题-CSDN博客

POJ NOI MATH-7648 蓄水池水管问题_蓄水管问题数学问题-CSDN博客

/*
小学奥数_7648蓄水池水管问题02
https://blog.csdn.net/weixin_30737363/article/details/99281690
https://blog.csdn.net/tigerisland45/article/details/68950921
思路:
关键一点是,需要假设出一个水池的容量。
即4个水管的最小公倍数,再假设出每个水管的流速。
然后模拟即可。 
*/
#include<iostream>
#include<cstdio>
using namespace std;
int gcd(int a,int b)
{
    return a%b?gcd(b,a%b):b;
}
int a,b,c,d,tot,temp;
double t;
int v[4];
int main( void )
{
    scanf("%d%d%d%d",&a,&b,&c,&d);
    
	tot=a*b*c*d/gcd(gcd(a,b),gcd(c,d));
    
	v[0]=-tot/d;
	v[1]=tot/a;
	v[2]=-tot/b;
	v[3]=tot/c;
    
	while(1)
	{
    	t++;
    	if(temp+v[(int)t%4]<tot)
    	{
      		temp+=v[(int)t%4];
	  	}
      	else
	  	{
        	t--;
        	t+=(double)(tot-temp)/v[((int)t+1)%4];
        	break;
      	}
    }
    
    printf("%.2f",t);
    
    return 0;
}
/*
小学奥数_7648蓄水池水管问题05
https://blog.csdn.net/weixin_30737363/article/details/99281690
https://blog.csdn.net/tigerisland45/article/details/68950921
思路:
关键一点是,需要假设出一个水池的容量。
即4个水管的最小公倍数,再假设出每个水管的流速。
然后模拟即可。 
*/
#include <cstdio>

int main()
{
  int a, b, c, d, sw = 1;
  double time = 0;
  scanf("%d%d%d%d", &a, &b, &c, &d);
  int va = b * c * d, vb = a * c * d, vc = a * b * d, vd = a * b * c;
  int maxn = va * a, sum = 0;
  while (sum < maxn)
  {
    if (sw == 1)
    {
      if (sum + va < maxn)
        sum += va, time++;
      else
        time += (maxn - sum) / (double)va, sum = maxn;
      sw++;
    }
    else if (sw == 2)
    {
      sum -= vb;
      time++;
      sw++;
    }
    else if (sw == 3)    
    {
      if (sum + vc < maxn)
        sum += vc ,time++;
      else
        time += (maxn - sum) / (double)vc, sum = maxn;
      sw++;
    }
    else if (sw == 4)
    {
      sum -= vd;
      time++;
      sw = 1;
    }
  }
  printf("%.2llf", time);
  return 0;
}



3、小学奥数_7649:我家的门牌号

OpenJudge - 7649:我家的门牌号

"""
 小学奥数 7649 我家的门牌号(python3)
 http://noi.openjudge.cn/math/7649/
 
"""
import sys

def sum(x):
            s=0
            i=0
            while i<=x:
                        s+=i
                        i+=1

            return s

n=int(input())

j=2
while j<=n:

            s1=sum(j)

            k=1
            while k<=j:
                        if (s1-k*2)==n:
                                    print(k,end=" ")
                                    print(j)
                                    sys.exit(0)
                        k+=1
            j+=1
#include<bits/stdc++.h>
using namespace std;
int a,b,n;
int main()
{
	scanf("%d",&n);
	for(int i=1;a<=101000;++i)
	{
		a=a+i;
		for(int j=1;j<=i;++j)
		{
			if(n==a-2*j)
			{
				printf("%d %d",j,i);
				return 0;
			}
		}
	}
	return 0;
}



4、7650:不定方程求解

OpenJudge - 7650:不定方程求解

"""
7650 不定方程求解(python3)
http://noi.openjudge.cn/math/7650/

"""
a,b,c = map(int,input( ).split( ))

ans=0

x=0
while x<=c//a:
            y=0
            while y<=c//b:
                        if (a*x+b*y)==c:
                                    ans+=1


                        y+=1
            x+=1
print(ans)
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int a,b,c,x,y,count=0;
	
	cin>>a>>b>>c;

	for(x=0;x<=c/a;x++)
	for(y=0;y<=c/b;y++)
	{
	  	if(a*x+b*y==c)
	  	{
	  		count++;	
	    }
	}
	
	cout<<count<<endl;
	
	return 0;
}


5、小学奥数_7651自来水供给

OpenJudge - 7651:自来水供给

POJ NOI MATH-7651 自来水供给_7651:自来水供给-CSDN博客

/* 
小学奥数_7651自来水供给03
http://noi.openjudge.cn/math/7651/
https://blog.csdn.net/weixin_33800463/article/details/93971636
https://blog.csdn.net/tigerisland45/article/details/69212046

△本题有两个坑:
1.输入第一个值为第一个村到县城距离,
剩下的为相邻两村间隔,而非绝对距离,村子距离是在一条公路上
(题中叙述有误,但算例是对的);

2.第一个村必须用粗管(题中未说明)

△
https://zhidao.baidu.com/question/578699515.html

http://www.docin.com/p-328133519.html
(参考网址)

△思路:由题可知8000的粗管是2000细管的4倍,这是解题关键。
所以解一这题的方法有两种:
以倒数第5个村为基点,前面的村子用粗管,
倒数第5个村到第4个村铺4条细管(铺4条细管价钱=1条粗管价钱),
倒数第4个村到第3个村铺3条细管,类推

第二种方法将倒数第5个村到第4个村铺1条粗管(铺4条细管价钱=1条粗管价钱),
一样的道理。


代码:
*/
#include <iostream>

using namespace std;
int main()
{ 	//num为粗管长度,num_为细管长度,result为最小费用
	int num = 0,num_ = 0,result = 0,n,a[100];
	
	cin >> n;
	
	for(int i = 0;i < n;++i)
	{
		cin >> a[i];
		if(i == 0) //第一个村必须用粗管(题中未说明)
		{
			result = a[0] * 8000;
			continue;
		}
		
		//如果当前铺的水管剩下的村子数大于4,就继续铺粗管,计算粗管长度
		if(i < n - 4) 
			num += a[i];
		else //如果当前铺的水管,还剩4个村,就开始求细管的长度
			num_ = num_ + (n - i) * a[i];//细管长度 = 剩下村子数 * 两村距离 +原长度
	}
	
	result = num * 8000 + num_ * 2000 + result;
	
	cout << result << endl;
	
	return 0;
}



6、小学奥数_7652乘积最大的拆分

OpenJudge - 7652:乘积最大的拆分

POJ NOI MATH-7652 乘积最大的拆分-CSDN博客

7、小学奥数_7653地球人口承载力估计

OpenJudge - 7653:地球人口承载力估计

信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653

信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653_地球人口承载力估计解题思路-CSDN博客

/*
小学奥数_7653地球人口承载力估计
http://noi.openjudge.cn/math/7653/

信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653
https://blog.csdn.net/lq1990717/article/details/111659696
*/
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int x,a,y,b;
	
	cin>>x>>a>>y>>b;
	
	printf("%.2f",(b*y-a*x)*1.0/(b-a));
	
	return 0;
}


8、7654:等差数列末项计算

OpenJudge - 7654:等差数列末项计算

9、小学奥数_7655回文数个数

OpenJudge - 7655:回文数个数

POJ NOI MATH-7655 回文数个数-CSDN博客

小学奥数_7655回文数个数

OpenJudge - 7655:回文数个数

POJ NOI MATH-7655 回文数个数-CSDN博客



10、7656:李白的酒

OpenJudge - 7656:李白的酒

"""

7656 不定方程求解(python3)
http://noi.openjudge.cn/math/7656/

"""
res=0

n=int(input())

for i in range(1,n+1):

            res+=1
            res/=2

print("%.5f" %res)
#include<bits/stdc++.h>
using namespace std;
int n;
double a=0;
int main()
{
	scanf("%d",&n);
	
	for(int i=1;i<=n;++i)
	{
		a=(a+1)/2;
	}
	
	printf("%.5lf",a);
	
	return 0;
}


11、小学奥数_7657连乘积末尾0的个数

OpenJudge - 7657:连乘积末尾0的个数

【计算连乘积中末尾0的个数】OpenJudge NOI 7657:连乘积末尾0的个数_给定两个正整数a和b,求连乘积末尾0的个数-CSDN博客

/* 
小学奥数_7657连乘积末尾0的个数
http://noi.openjudge.cn/math/7657/

https://blog.csdn.net/qian2213762498/article/details/79780593
https://blog.csdn.net/tigerisland45/article/details/69218400
*/
#include <cstdio>
#define min(a, b) (a < b ? a : b)

inline int five(int a)
{
	int res = 0;
	while (a % 5 == 0)
	{
		a /= 5;
		res++;
	}
	return res;
}

inline int two(int a)
{
	int res = 0;
	while (a % 2 == 0)
	{
		a /= 2;
		res++;
	}
	return res;
}

int main()
{
	int a, b, m = 0, n = 0;
	scanf("%d%d", &a, &b);
	
	for (int i = a; i <= b; i++)
	{
		m += two(i);
		n += five(i);
	}
	printf("%d", min(m, n));
	return 0;
}


12、小学奥数_7826分苹果

OpenJudge - 7826:分苹果

POJ NOI MATH-7826 分苹果-CSDN博客

"""

7826:分苹果(python3)
http://noi.openjudge.cn/math/7826/

"""
n=int(input())

ans=n*(n+1)//2

print(ans)
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
 
    cin >> n;
 
    cout << n * (n + 1) / 2 << endl;
 
    return 0;
}



13、小学奥数_7827:质数的和与积

OpenJudge - 7653:地球人口承载力估计

7827:质数的和与积 ①_质数的和与积 两个质数的和是s.它们的积最大是多少? 输入: 一个不大于1000的正整-CSDN博客

14、小学奥数_7828:最大公约数与最小公倍数

OpenJudge - 7828:最大公约数与最小公倍数

"""

7828:最大公约数与最小公倍数(python3)
http://noi.openjudge.cn/math/7828/


"""
def gcd(x,y):
            if y==0:
                        return x
            return gcd(y,x%y)

def lcm(x,y):
            return x*y//gcd(x,y)

x,y=map(int,input().split())

minx=1000000

a=x

while a<=y:
            tmp=(x*y)%a
            if tmp==0:
                        b=x*y//a

                        if gcd(a,b)==x and lcm(a,b)==y:
                                    if (a+b)<minx:
                                                minx=a+b


            a=a+x

print(minx)


15、小学奥数_7829神奇序列求和

OpenJudge - 7829:神奇序列求和

POJ NOI MATH-7829 神奇序列求和-CSDN博客

[OpenJudge-NOI]神奇序列求和-CSDN博客

16、小学奥数_7830求小数的某一位

OpenJudge - 7830:求小数的某一位

1082:求小数的某一位

信息学奥赛一本通(C++版)在线评测系统

OPJ---7830:求小数的某一位-CSDN博客

17、小学奥数_7831计算星期几

OpenJudge - 7831:计算星期几

/*
电子协会 C语言 1级  63 、 计算星期几 02
假设今天是星期日,那么 a^b 天之后是星期几?
输入
两个正整数 a,b,中间用单个空格隔开。0<a≤100, 0<b≤10000。
输出
一个字符串,代表过 a^b 天之后是星期几。
其中,Monday 是星期一,Tuesday 是星期二,Wednesday 是星期三,Thursday 是星期四,
Friday 是星期五,Saturday 是星期六,Sunday 是星期日。
输入样例: 3 2000
输出样例: Tuesday
*/
#include<iostream>
#include<string>
using namespace std;
int main() 
{
	int i,a,b,n=1;
	
	string week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Wednesday"};
	
	cin>>a>>b;
	
	for(i=1; i<=b; i++) n=n*a%7; //循环计算 n 天后是周几
	
	cout<<week[n];
	
	return 0; 
}


18、小学奥数_7832最接近的分数

OpenJudge - 7832:最接近的分数

7832:最接近的分数 ①-CSDN博客

POJ NOI MATH-7832 最接近的分数-CSDN博客

19、小学奥数_7833幂的末尾

OpenJudge - 7833:幂的末尾

【快速幂取模】NOI 7833:幂的末尾-CSDN博客

POJ NOI MATH-7833 幂的末尾_幂的末尾【小学奥数7833】 幂ab的末3位数是多少?-CSDN博客

OpenJudge_P7833 幂的末尾-CSDN博客

20、小学奥数_7834分成互质组

OpenJudge - 7834:分成互质组

7834:分成互质组-CSDN博客

https://www.cnblogs.com/huashanqingzhu/p/6618432.html

https://www.cnblogs.com/uncle-lu/p/6002250.html








NOI题库 小学奥数(python)

NOI题库 小学奥数_noi 小学-CSDN博客

 


【数学2-1】进阶数论

【数学2-1】进阶数论 - 题单 - 洛谷

【数学2-2】组合数学与计数

【数学2-2】组合数学与计数 - 题单 - 洛谷

【数学2-3】概率与统计

【数学2-3】概率与统计 - 题单 - 洛谷

【数学2-4】基础线性代数

【数学2-4】基础线性代数 - 题单 - 洛谷

NOI / 小学奥数

OpenJudge - OpenJudge - 题目

NOI / 4.2算法之数论

OpenJudge - OpenJudge - 题目

 




NOI 大纲(2023年修订版)正式发布

NOI 大纲(2023年修订版)正式发布

2023大纲上传

2023大纲上传




学编程,听听张雪峰怎么说

https://www.douyin.com/video/7307474163827051795

NOI题库 小学奥数(python)

NOI题库 小学奥数_noi 小学-CSDN博客

 




《信息学奥赛一本通 编程启蒙 C++版》 3001-3226

《信息学奥赛一本通 编程启蒙 C++版》 3001-3226-CSDN博客

《信息学奥赛一本通 编程启蒙 C++版》视频、题解(01-65)

《信息学奥赛一本通 编程启蒙 C++版》视频、题解(01-65)-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》第1课 -- 第86课

《信息学奥赛一本通 编程启蒙C++版》第1课 -- 第86课-CSDN博客

编程与数学、跟我学信奥、GOC编程

编程与数学、跟我学信奥、GOC编程-CSDN博客

信奥中的数学 习题集001-010(10题)

信奥中的数学 习题集001-010(10题)-CSDN博客

洛谷OJ食用指北

洛谷OJ食用指北-CSDN博客

神奇的幻方(2023.12.17)

神奇的幻方(2023.12.17)-CSDN博客

oierdb

OIerDb




小学生C++编程基础(一)--- 123题

小学生C++编程基础(一)--- 123题_小学c++编程题目-CSDN博客

第9关 - 课程E 数组前缀和(C++进阶课程)

第9关 - 课程E 数组前缀和(C++进阶课程)-CSDN博客

第10关 - 课程F 二重循环应用1

第10关 - 课程F 二重循环应用1-CSDN博客

第11关 - 课程G 冒泡、选择、插入排序、分解质因子

第11关 - 课程G 冒泡、选择、插入排序、分解质因子-CSDN博客

第12关 - 课程ZA 二维数组应用1

第12关 - 课程ZA 二维数组应用1-CSDN博客

 

 

 

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dllglvzhenfeng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值