5.7号第一次蓝桥杯训练(c++)

1.阶乘末尾

    (求某数阶乘 的 后 n 位)

     1.保留多少位就 % 10的n次方  ( x % pow(10,n) );

       2.如果先把sum的阶乘算出来数字会太大,所以阶乘的时候就先 直接取余 

    3.一次降位输出

#include<bits/stdc++.h>
using namespace std;
/*
    1.保留多少位就余10的n次方  
    
*/ 
int main(){
    long long int n,len,sum=1,i,k;
    
    cin>>n>>len;    //输入n len; 
    
    long long int t = pow(10,len);    //t=10的len次方 
    
    for(int i=1;i<=n;i++){
        sum*=i;
        sum=sum%t;    //  要保留 n位 就  % 10 n次方 
    }
        //sum=sum%t;   如果先把sum的阶乘算出来数字会太大,所以阶乘的时候就先 直接取余 
    
    k=t/10;    // 4321 取(4位) 10000/10 =1000;  4321/1000 =  4
     
    for(int i=0;i<len;i++){
        cout<<sum/k;    //输出最高位  4321/1000 = 4 
        
        sum%=k;     // 去最高位    4321 % 1000 = 321; 
        k/=10;        // 依次降位      1000/10  = 100; 
    }
} 

 

 

2.算集合 (交 ,并,补)

1.set容器  
       自动排序,去重,元素无法直接被更改   https://www.cnblogs.com/wkfvawl/p/11041079.html 常用方法:began(), rbegin()end(),,redn(); clear(), empty(), max_size(),size(), insert() 插入 count() 返回键值出现的次数(0/1)
2.sort()函数                   https://www.cnblogs.com/junbaobei/p/10776066.html
     排序函数sort(0,n) 默认小到大 , sort(0,n,cmp) 大到小

3.auto ??
4.set<int>::iterator it; ???
#include<bits/stdc++.h>
using namespace std;
int n,m;    
int a[1005],b[1005];

set<int>c;  //交集
set<int>s1; //并集  

int main(){
    cin>>n;                    //集合 大小 
    for(int i=1;i<=n;i++){
        cin>>a[i];            //集合元素 
        s1.insert(a[i]);    //将a[i]加入s1中 
        }
        
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>b[i];
        if(s1.count(b[i]))
            c.insert(b[i]);  //若s1中包含b[i]元素,将b[i]加入 交集c中
        s1.insert(b[i]); 
    }
                             //???
    set<int>::iterator it;  //代替auto 啥的,iterator是迭代器   不太懂 
    
    for(it=c.begin(); it!=c.end(); it++)    //输出交集 
        cout<<*it <<" ";
    puts("");
        
    for(it=s1.begin(); it!=s1.end(); it++)    //输出并集 
        cout<<*it <<" ";
    puts("");
    
    sort(a+1,a+n+1);      //数组排序  sort函数 sort(first,last,无/cmp) 
    
    for(int i=1;i<=n;i++){                        //输出B在A中补集 
        if(!c.count(a[i]))  //若交集c中没有a[i]元素,则输出 a[i]   
        cout<<a[i] <<" ";
    } 
    puts("");
}

3.https://blog.csdn.net/curryljx/article/details/116507595?spm=1001.2014.3001.5501

4.

5.

 

posted @ 2021-05-12 23:31  simp1e1  阅读(67)  评论(0)    收藏  举报