首页 > 其他分享 >Zcmu-1178

Zcmu-1178

时间:2024-06-03 14:10:35浏览次数:26  
标签:set int long Zcmu 相乘 1178 include

image
image


思路:

  1. 分析题目要求的就是由2,3,5,7单独相乘或者组合相乘的数字。
  2. 所以将数字循环起来相乘,之后结果按从大到小地无重复放进数组当中。

学长

#include<set> 
#include<queue>
#include<vector>
#include<cstdio>
using namespace std;
typedef long long ll;
int num[4]={2,3,5,7};
//set,封装了二叉树(红黑树),没有重复元素 
set<ll> s;
//优先队列 :数据类型,容器类型,比较方式(这里是升序,建堆) 
priority_queue<ll,vector<ll>,greater<ll> > q;
vector<ll> v;
void init(){
    s.insert(1);
    q.push(1);
    /*由题目可知一系列数,就是2,3,5,7相乘的情况
	所以程序模拟相乘就行了*/ 
    for(int j=1;j<=5842;j++){
    	//可知最多是5842个 
        ll a=q.top();
        q.pop();
        v.push_back(a);//队列当中直接收 
        for(int i=0;i<4;i++){
            ll b=a*num[i];
            if(!q.count(b)){
            	//要保证前面没有 
                s.insert(b);
                q.push(b);
            }
        }
    }
}
int main(){
    init();
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%lld\n",v[n-1]);
    }
    return 0;
}

标签:set,int,long,Zcmu,相乘,1178,include
From: https://www.cnblogs.com/hai-zei/p/18228776

相关文章

  • ZCMU-1133
    emm就直接看的前辈的了。唉#include<stdio.h>#include<string.h>#include<algorithm>//我不成熟的想法是两成遍历//但感觉会时间超限,但没有先想到深度搜索usingnamespacestd;intn,t;intnum[101];//存放输入情况intr[101];//记录可能情况boolflag;v......
  • ZCMU-1149
    就是背包01问题#include<iostream>#include<cstring>/*01背包问题*/usingnamespacestd;constintmaxn=120;constintmaxm=1e5+10;intdp[maxm],a[maxm];intn,m;intmain(){intt;cin>>t;while(t--){cin>>n;......
  • ZCMU-1144
    简单问题:就只是如何降低时间的问题罢了:本来这种方法以前学过但是没怎么用所以不太灵活、#include<stdio.h>#definemaxn1000010intsum[maxn]={0};voidSum(){ for(inti=1;i<=maxn;i++){for(intj=i;j<=maxn;j+=i){sum[j]++;//表示......
  • ZCMU-1120
    就这样#include<cmath>#include<cstdio>#include<iostream>usingnamespacestd;intmain(){inti,k,sum;while(~scanf("%d",&k)){i=0,sum=0;k=abs(k);//前面设置成0的所以//先加后用while(+......
  • ZCMU-1179
    我的错误:明知道是大数问题但不是不想写数组或者字符串的结构。思路网上查阅后发现可以使用JAVA的大数类型做。若不使用JAVA则就是整型数组或者字符串的情况。将a^b结果放在数组当中,实时更新数组,每次用a去乘当前数组,记得加长。因为上面情况得到的结果是倒序的不方便比......
  • ZCMU-1156
    思路:要改变的是一个范围的情况,所以正常情况下会超时。查阅后知道应该用一个叫做树状数组的结构。查阅和树状数组的后续情况这个也不错注意:我没怎么看懂,可能没太仔细看。树状数组当中存在的是前后的差,所以每次变动只是在start,end+1变动.因为一直上去的是lowbi......
  • Codeforces 1178B WOW Factor
    题目简述给定一个只含$v$和$o$的字符串$s$,求字符串中有多少个$wow$(一个$w$即为连续的两个$v$)。题目分析考虑枚举每一个$o$,设下标为$i$,统计它左边和右边各有多少个$w$,分别设为$a_{i-1}$和$b_{i+1}$,依据乘法原理,将它们乘起来即为答案,累加即可。接下来,考虑怎么处......
  • ZCMU-1153
    思路一个感觉是规律问题的数学问题因为输入的是n所以要的出有关n的关系或者关系有关排序,所以可以从位次入手,设双胞胎前一个位置在ai,后一个在bi.Sum(bi-ai)=(2+3+4+5+6+...+n+1)=(1+2+3+4+5+6+...+n)+n*1=((n+1)*n)/2+n;Sum(ai+bi)=(1+2+3+4+....+2n)=((1+2n)*(2*n))/2......
  • ZCMU-1136
    思路一个数学问题要知道1为奇数,2^x次方一定为偶数。偶数=奇数+奇数,而奇数=奇数*奇数,所以x一定要是奇数才可以。注意没告诉范围所以要往大的方向考虑其中1能够被任一整数整除,所以前面加上对1的判断参考(费马小定理)#include<stdio.h>intmain(){inti,n,temp......
  • ZCMU-1111
    与背包和动态规划有关(我认为)采用dp数组存放吃掉i千克食物要用掉的钱dp最开始要尽量的大方便过程中判断和最后的输出判断实时更新dp,保留最小的钱以前不知道的printf函数可以这样用fill函数填充数组,(开始,结束,填充值);C和C++结构体里面可以放函数学习#include<c......