《信息学奥赛一本通 编程启蒙 C++版》 3461-3470(10题)

1、3461:练83.1 压缩歌曲

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

【信息学奥赛一本通-编程启蒙】3461练83.1 压缩歌曲_哔哩哔哩_bilibili

[C++贪心习题]压缩歌曲

[C++贪心习题]压缩歌曲-CSDN博客

程序设计 -- 压缩歌曲

程序设计 -- 压缩歌曲_小明的电脑里面有一些歌。现在他需要把这些歌装进一个硬盘里面。 硬盘大小有限,由_逐渐疯狂的博客-CSDN博客

c--歌曲压缩 C - Songs Compression

c--歌曲压缩 C - Songs Compression_压缩歌曲c++-CSDN博客

#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
long long s;
struct T{
	int a,b;
	inline bool operator<(const T& t) const{
		return a-b>t.a-t.b;
	}
}t[100010];
int main( void )
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		scanf("%d%d",&t[i].a,&t[i].b);
		s+=t[i].a;
	}
	sort(t,t+n);
	for(int i=0;i<n && s>m;++i)
	{
		s-=t[i].a-t[i].b,++ans;	
	}
	cout<<(s>m?-1:ans);
	return 0;
}



2、3462:练83.2 汽水瓶

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

【信息学奥赛一本通-编程启蒙】3462练83.2 汽水瓶_哔哩哔哩_bilibili

【C++每日一练】华为机试 | 牛客HJ22. 计算汽水瓶数目(三个空汽水瓶可以换一瓶汽水)

【C++每日一练】华为机试 | 牛客HJ22. 计算汽水瓶数目(三个空汽水瓶可以换一瓶汽水) - 知乎

C++解决《汽水瓶》问题(vector、递归调用)

https://blog.csdn.net/lzq8090/article/details/115715352

#include <iostream>
using namespace std;

int main() {
    int n=0;
    while(cin>>n)
    {
        if(n<=1)
           break;
        cout<<n/2<<endl;
    }
    return 0;
}
#include<iostream>
using namespace std;
 
int main()
{
	//剩余矿泉水瓶res,可以兑换的量为num 
	int  num,res ;
	while (cin >> num && num != 0)
	{
        //每次必须设0,不然会累计
		res = 0;
	 	while (num >= 3)
		{
			res += num / 3;
			num = num % 3  + (num / 3) ;	
		}
		if (num == 2) res+=1;
		cout << res <<endl;
	}
    return 0;
}



3、3463:练83.3 特殊的集合

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

【信息学奥赛一本通-编程启蒙】3463练83.3 特殊的集合_哔哩哔哩_bilibili

#include<iostream> 
#include<algorithm> 
using namespace std; 
int main() { 
	long n, m, i, num; 
	cin >> n; 
	long total = (n + 1) / 2; 
	for(i = 1; i <= n / 4; i += 2) { 
		num = 0; 
		m = i; 
		while(m <= n / 2){ 
			num ++; 
			m *= 2; 
		} 
		total += num / 2; 
	} 
	cout << total << endl; 
	return 0; 
}
/*
3463:练83.3 特殊的集合
http://bas.ssoier.cn:8086/problem_show.php?pid=3463
https://blog.csdn.net/m0_48489737/article/details/116405620
*/
#include<iostream> 
#include<algorithm> 
using namespace std; 
int main() { 
	long n, m, i, num; 
	cin >> n; 
	long total = (n + 1) / 2; 
	for(i = 1; i <= n / 4; i += 2) { 
		num = 0; 
		m = i; 
		while(m <= n / 2){ 
			num ++; 
			m *= 2; 
		} 
		total += num / 2; 
	} 
	cout << total << endl; 
	return 0; 
}



4、3464:练83.4 分解因数

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

【信息学奥赛一本通-编程启蒙】3464练83.4 分解因数_哔哩哔哩_bilibili

#include<bits/stdc++.h>
using namespace std;
int sum;
void f(int x,int y)
{
    for(int i=x;i<y;i++)
    {
        if(y%i==0&&i<=y/i)
        {
            sum++;
            f(i,y/i);
        }
        if(i>y/i)
            return;
    }
}
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        sum=1;
        int n;
        cin>>n;
        f(2,n);
        cout<<sum<<endl;
    }
    return 0;
}
/*
3464:练83.4 分解因数
http://bas.ssoier.cn:8086/problem_show.php?pid=3464
https://blog.csdn.net/Wchenchen0/article/details/81077489
https://www.cnblogs.com/dks0313/p/16513724.html
https://blog.csdn.net/qq_40802813/article/details/119429101
https://blog.csdn.net/qq_26919935/article/details/77773688
*/
#include<bits/stdc++.h>
using namespace std;
int sum;
void f(int x,int y)
{
    for(int i=x;i<y;i++)
    {
        if(y%i==0&&i<=y/i)
        {
            sum++;
            f(i,y/i);
        }
        if(i>y/i)
            return;
    }
}
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        sum=1;
        int n;
        cin>>n;
        f(2,n);
        cout<<sum<<endl;
    }
    return 0;
}



5、3465:练83.5 二分查找2

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

【信息学奥赛一本通-编程启蒙】3465练83.5 二分查找2_哔哩哔哩_bilibili

#include <bits/stdc++.h>
using namespace std;
int n,a[30000+10],q;
int main( void )
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	cin>>q;
	for(int k;q--;)
	{
		scanf("%d",&k);
		int lft=1,rht=n;
		while(lft<=rht){
			int m=(lft+rht)>>1;
			if( a[m]<=k)
			{
				lft=m+1;
			}
			else
			{
				rht=m-1;
			}
		}
		printf("%d ",a[rht]==k?rht:-1);
	}
	return 0;
}



6、3466:【例84.1】 取余运算

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

[例84.1] 取余运算

1326:【例7.5】 取余运算(mod)

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

取余运算(信息学奥赛一本通-T1326)_哔哩哔哩_bilibili

【信息学奥赛一本通-编程启蒙】3466【例84.1】 取余运算

【信息学奥赛一本通-编程启蒙】3466【例84.1】 取余运算_哔哩哔哩_bilibili

#include<iostream>
#include<cstdio>
using namespace std;
int b,p,k,a;

//利用分治求b^p%k
int f(int p)                                          
{
	// b^0 %k=1 
	if (p==0) return 1;                                              
	
	int tmp=f(p/2)%k;                       
	tmp=(tmp*tmp) % k;                   
	
	// b^p %k=(b^(p/2))^2 % k
	//如果p为奇数,则 b^p %  
	if (p%2==1) tmp=(tmp * b) %k;  
    return tmp;  //k=((b^(p/2))^2)* b%k
}
int main( void )
{
    //读入3个数
	cin>>b>>p>>k;                
    
    //将b的值备份
	int tmpb=b;                      
    
    //防止b太大
	b%=k;                              
    
    //输出
	printf("%d^%d mod %d=%d\n",tmpb,p,k,f(p)); 
    
	return 0;
}



7、3467:【例84.2】分香蕉

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

【信息学奥赛一本通-编程启蒙】3467【例84.2】分香蕉

【信息学奥赛一本通-编程启蒙】3467【例84.2】分香蕉_哔哩哔哩_bilibili

蓝桥杯历年真题 猴子分香蕉C/C++

蓝桥杯历年真题 猴子分香蕉C/C++_大码龙的博客-CSDN博客

第9届 蓝桥杯c++A组 猴子分香蕉

第9届 蓝桥杯c++A组 猴子分香蕉_猴子分香蕉c++-CSDN博客

算法题每日一练---第1天:猴子分香蕉

算法题每日一练---第1天:猴子分香蕉_51CTO博客_猴子吃香蕉算法题

#include <bits/stdc++.h>
using namespace std;
int n,m,a[100010],b[100010],id[100010];
long long ans[100010];
int main(  )
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	
	for(int i=0;i<m;i++)
	{
		scanf("%d",&b[i]);
		id[i]=i;
	}
	
	sort(a,a+n,greater<int>());
	sort(id,id+m,[&](int i,int j){return b[i]>b[j];} ); 
	
	for(int i=0,j=0;i<n;i++)
	{
		int k=id[j];
		ans[k]+=a[i];
		j=j+1==m?0:j+1;
	}	
	
	for(int i=0;i<m;i++)
	{
		printf("%lld ",ans[i]);
	}
	return 0;
}



8、3468:练84.1 2011n次方的后四位

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

练 84.1 2011的n 方后四位

1234:2011

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

2011(信息学奥赛一本通-T1234)

2011(信息学奥赛一本通-T1234)_哔哩哔哩_bilibili

信息学奥赛一本通 1234:2011

信息学奥赛一本通 1234:2011_哔哩哔哩_bilibili

C+1234 2011

C+1234 2011_哔哩哔哩_bilibili

信息学奥赛 1234-2011_哔哩哔哩_bilibili

#include<stdio.h>
#include<string.h>
// m^n % k
long long quickpow(long long m,long long n,long long k)
{
    long long ans = 1;
    while (n > 0)
    {
          if (n & 1)
             ans = (ans*m)%k;
          n = n >> 1 ;
          m = (m*m)%k;
    }
    return ans;
}
int main(int argc, char *argv[])
{
    int k;
    int i;
    char n[205];
    int N,len;
    scanf("%d",&k);
    for(i=0;i<k;i++)
    {
        scanf("%s",n);getchar();
        N=0;
        len=strlen(n);
        N=n[len-1]-'0';
        if(len>=2) N=(n[len-2]-'0')*10+N;
        if(len>=3) N=(n[len-3]-'0')*100+N;
        if(len>=4) N=(n[len-4]-'0')*1000+N;
        N=N%500;
        printf("%lld\n",quickpow(2011,N,10000));
    }
    return 0;
}



9、3469:练84.2 光荣的梦想

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

练84.2光荣的梦想

1328:【例7.7】光荣的梦想

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

分治算法,例题,光荣的梦想

分治算法,例题,光荣的梦想_哔哩哔哩_bilibili

归并排序-光荣的梦想

归并排序-光荣的梦想_哔哩哔哩_bilibili

信息学奥赛一本通 1328:【例7.7】光荣的梦想

信息学奥赛一本通 1328:【例7.7】光荣的梦想_哔哩哔哩_bilibili

/*
1328:【例7.7】光荣的梦想
http://ybt.ssoier.cn:8088/problem_show.php?pid=1328
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#define INF 999999999
#define N 1000001
#define MOD 1000000007
using namespace std;
int n;
int a[N],b[N];
long long ans=0;
void msort(int left,int right)
{
    int mid=(left+right)/2;
    if(left>=right)
        return ;
    msort(left,mid);
    msort(mid+1,right);
 
    int i=left,j=mid+1,n=mid,m=right,k=0;
    while(i<=n&&j<=m)
        if(a[i]>a[j])
        {
            ans+=n-i+1;
            b[k++]=a[j++];
        }
        else
            b[k++]=a[i++];
    while(i<=n)
        b[k++]=a[i++];
    while(j<=m)
        b[k++]=a[j++];
    for(i=0;i<k;i++)
        a[left+i]=b[i];
}
int main( void )
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    
	msort(1,n);
    
	cout<<ans<<endl;
    
	return 0;
}



10、3470:【例85.1】 金银岛

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

[例85.1] 金银岛

1225:金银岛

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

信息学奥赛一本通1225:金银岛

信息学奥赛一本通1225:金银岛_哔哩哔哩_bilibili

信息学奥赛 1225-金银岛

信息学奥赛 1225-金银岛_哔哩哔哩_bilibili

T217592 金银岛(信息学奥赛一本通-T1225)

T217592 金银岛(信息学奥赛一本通-T1225)_哔哩哔哩_bilibili

/*
1225:金银岛
http://ybt.ssoier.cn:8088/problem_show.php?pid=1225
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define INF 999999999
#define N 101
using namespace std;
struct node
{
    int w;
    int c;
    double g;
}a[N],temp;
int main( void )
{
    int t;
    int W,m;
 
    cin>>t;
    while(t--)
    {
        double cnt=0;
        cin>>W>>m;
        for(int i=1;i<=m;i++)
        {
            cin>>a[i].w>>a[i].c;
            a[i].g=a[i].c*1.0/a[i].w;
        }
        for(int i=1;i<=m;i++)
            for(int j=i+1;j<=m;j++)
                if(a[i].g<a[j].g)
                {
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
        for(int i=1;i<=m;i++)
        {
            if(W>=a[i].w)
            {
                cnt+=a[i].c;
                W-=a[i].w;
            }
            else
            {
                cnt+=a[i].g*W;
                break;
            }
        }
        printf("%.2lf\n",cnt);
    }
    return 0;
}



1、啊哈编程星球

啊哈编程星球!编程学习从这开始~

适用于:编程初学者、小学一至三年级

2、慧通教育

慧通教育

适用于:编程初学者、小学生编程入门

3、《信息学奥赛一本通 编程启蒙》C++版

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

适用于:编程初学者、小学生编程启蒙

争取在小学1-4年级就将2、3两个题库的全部或大部分题 做完

为进一步深入学习信奥打好坚实的基础

4、信息学奥赛一本通

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

5、洛谷

https://www.luogu.com.cn/

洛谷题单广场

题单列表 - 洛谷

6、AcWing

AcWing

7、编程魔法师

编程魔法师






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dllglvzhenfeng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值