日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单题汇总,小知识点

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单题汇总,小知识点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

補題
問題(補題之前)答題情況

A
思考:如何在數組中搜索4個數

C區間異或

給出區間(a,b),b >= a,求a xor (a+1) xor (a+2)…xor b。
輸入2個數:a b,中間用空格分隔(1 <= a <= b <= 10^9)
分析:
異或^
代碼

#include<iostream> #include<cstdio> #include<cstdlib>//exit()using namespace std;int main(){//cout<<(3^4)<<endl;int a,b;cin>>a>>b;if(a==b){cout<<0<<endl;exit(0);}long long tmp=a;for(long long i=a+1;i<=b;i++){tmp=tmp^i;} cout<<tmp<<endl; }

題目

分析:暴力枚舉即可,但是需要稍微大一點,從-200到200范圍。
ac代碼

#include<iostream> using namespace std;long long cimi(long long x,int n){long long result=1;for(int i=1;i<=n;i++)result*=x;return result;}int main(){long long n;cin>>n;for(long long i=-150;i<150;i++)for(long long j=-150;j<150;j++){if(cimi(i,5)-cimi(j,5)==n){cout<<i<<" "<<j<<endl;return 0;}} }

判斷n個數中是否存在若干個數之和等于目標值
輸入 n個數和目標值m

bool dfs(int i,int target){//退出條件 if(i==n){if(target==m){ return true;}else return false;} //不加上a[i]的情況if(dfs(i+1,target)) return true;//加上a[i]的情況 if(dfs(i+1,target+a[i])) return true;return false;}

現在我們不僅要判斷,還需要輸出這些組合。

判斷素數
需要2到x\sqrt xx?范圍判斷有無因子。

#include<iostream> #include<cmath> #include<stdio.h>using namespace std;bool isPrime(int x){//判斷質數 for(int i=2;i<=sqrt(x);i++){if(x%i==0)return false;}return true; }int main(){int m,cnt=0; cin>>m;for(int i=m-1;i>=2;i--){//從高到低枚舉 if(isPrime(i)){printf("%-.6d\n",i);//右對齊 cnt++;}if(cnt==10)//達到要求個數 break;} }

天梯賽
字符串A-B的問題

題目
本題要求你計算A-B。不過麻煩的是,A和B都是字符串—— 即從字符串A中把字符串B所包含的字符全刪掉,剩下的字符組成的就是字符串A-B。
Input
輸入在2行中先后給出字符串A和B。兩字符串的長度都不超過10^4,并且保證每個字符串都是由可見的ASCII碼和空白字符組成,最后以換行符結束。
Output
在一行中打印出A-B的結果字符串。
Sample Input 1

I love GPLT! It's a fun game! aeiou

Sample Output 1

I lv GPLT! It's fn gm!

分析
只需要標記在B中出現過的字符,然后在A中判斷,如果沒有則輸出即可。

這里的問題是:讀入。
cin,scanf是遇到空格停止讀入,不讀入空格。
getline是讀入一整行。
所以如果一行需要讀取進來,并且其中有空格的話不能使用cin和scanf,需要使用getline

#include<iostream> #include<cmath> #include<stdio.h> #include<string> #include<map> #include<cstring>using namespace std;string a,b; map<char,int> mp;int main(){//cin>>a;//空格結束 //cin>>b;getline(cin,a);//注意輸入 getline(cin,b);//可以讀取空格,有空格時使用getline int len1,len2;len1=a.size();len2=b.size();for(int i=0;i<len2;i++){mp[b[i]]=1;//做標記 }for(int i=0;i<len1;i++){if(mp[a[i]]==0)//未作標記的輸出即可 cout<<a[i];}}

牛客網
Another Server

分析
節點之間呈鏈,兩個節點之間是兩條網線。兩個節點間的網絡通過量是兩條網線之和,然后求這些通過量的最小值。換個詞“短板效應”。

#include<iostream> #include<algorithm> #include<vector> using namespace std; vector<int> v; int T,n,a[200],x,y; int main(){cin>>T;while(T--){cin>>n;for(int i=1;i<=n-1;i++){cin>>x>>y;v.push_back(x+y);}sort(v.begin(),v.end());cout<<(*v.begin())<<endl;v.clear();//做完一次需要清空動態數組}}

或者更簡單的代碼
直接取兩者最小值

#include<iostream> #include<algorithm> #include<vector> using namespace std; vector<int> v; int T,n,a[200],x,y,result=10000; int main(){cin>>T;while(T--){cin>>n;result=10000;for(int i=1;i<=n-1;i++){cin>>x>>y;result=min(x+y,result);}cout<<result<<endl;}}

牛客網
晨跑
三個數的最小公倍數
注意:long long 不要int ,最后會超 int的范圍

#include<iostream> #include<algorithm> using namespace std;int main(){long long a,b,c;cin>>a>>b>>c;if(a==0||b==0||c==0){cout<<0<<endl;exit(0);}long long x,y,a_;x=__gcd(a,b);//最大公約數 a_=a*b/x;//最小公倍數 y=__gcd(a_,c);cout<<a_*c/y<<endl; }

總結

以上是生活随笔為你收集整理的简单题汇总,小知识点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。