生活随笔
收集整理的這篇文章主要介紹了
简单题汇总,小知识点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
補題
問題(補題之前)答題情況
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>using namespace std
;int main(){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;} if(dfs(i
+1,target
)) return true;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(){getline(cin
,a
);getline(cin
,b
);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
;
}
總結
以上是生活随笔為你收集整理的简单题汇总,小知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。