第一题
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
cout<<(36*30)/10;
return 0;
}
第二题
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int t=2;
for(int i=2;i<=2023;i++){
t=(t*2)%1000;
}
cout<<t<<endl;
return 0;
}
第三题
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int> tov(int i,int t){
vector<int>n;
do{
n.push_back(i%t);
i=i-i%t;
i/=t;
}while(i!=0);
return n;
}
bool euq(vector<int>t,vector<int>e){
int tt=0;
int ee=0;
for(vector<int>::iterator it=t.begin();it!=t.end();it++){
tt+=*it;
}
for(vector<int>::iterator it=e.begin();it!=e.end();it++){
ee+=*it;
}
return tt==ee;
}
signed main(){
int count=0;
for(int i=1;;i++){
vector<int>t=tov(i,2);
vector<int>e=tov(i,8);
if(euq(t,e)){
count++;
if(count==23){
cout<<i<<endl;
break;
}
}
}
return 0;
}
这题可以暴力枚举
2进制进位和和8进制进位和如果一样的话可以这样考虑
2进制只有0,1两个数
如果相等的话8进制也应该只有0,1两个数字
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
// 1
// 10
// 11
// 100
// 101
// 110
// 111
// 1000
// 1001
// 1010
// 1011
// 1100
// 1101
// 1110
// 1111
// 10000
// 10001
// 10010
// 10011
// 10100
// 10101
// 10110 第23个在这里
// 10111
// 11000
// 11001
// 11010
// 11100
// 11101
// 11110
// 11111
// 10111
cout<<pow(8,4)+pow(8,2)+pow(8,1)+pow(8,0);
}
signed main(void){
int _=1;
while(_--){
solve();
}
}
第四题
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
int n;
cin>>n;
vector<int>nn(n);
for(vector<int>::iterator it=nn.begin();it!=nn.end();it++){
cin>>*it;
}
vector<int>num;
int max=0;
for(vector<int>::iterator it=nn.begin();it!=nn.end();it++){
int count=0;
for(int i=1;i<=*it;i++){
if(*it%i==0){
count++;
}
}
if(num.empty()){
num.push_back(*it);
max=count;
continue;
}
if(count>max){
num.clear();
num.push_back(*it);
max=count;
continue;
}
if(count==max){
num.push_back(*it);
max=count;
continue;
}
}
cout<<*num.begin()<<endl;
}
signed main(void){
int _=1;
while(_--){
solve();
}
return 0;
}
第五题
经典dfs题目
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<string>MAP;
int m,n;
void dfs(int i,int j){
if(i < 0 || i >= m || j < 0 || j >= n)
return;
if(MAP[i][j]!='0')
return;
MAP[i][j] = '2';
dfs(i - 1, j);
dfs(i + 1, j);
dfs(i, j - 1);
dfs(i, j + 1);
}
void slove(){
cin>>m>>n;
MAP.resize(m);
for(vector<string>::iterator it=MAP.begin();it!=MAP.end();it++){
cin>>*it;
}
dfs(0,0);
int num=0;
for(vector<string>::iterator it=MAP.begin();it!=MAP.end();it++){
string t=*it;
for(string::iterator it2=t.begin();it2!=t.end();it2++){
if(*it2=='2'){
num++;
}
}
}
cout<<num;
}
signed main(){
int _=1;
while(_--){
slove();
}
return 0;
}
第六题
把第一个加在字符串最后,然后从第二个开始输出
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
string a;
cin>>a;
a=a+a[0];
for(int i=1;i<a.size();i++){
cout<<a[i];
}
}
signed main(void){
int _=1;
while(_--){
solve();
}
return 0;
}
第七题
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
string a;
cin >> a;
for (string::reverse_iterator it = a.rbegin(); it != a.rend(); it++)
{
if (*it == 'a' || *it == 'e' || *it == 'i' || *it == 'o' || *it == 'u')
{
cout << *it;
break;
}
}
}
signed main(void)
{
int _ = 1;
while (_--)
{
solve();
}
return 0;
}
第八题
递归(字符串写法)
#include <bits/stdc++.h>
using namespace std;
#define int long long
void fruit(string a){
if(a.size()<=1){
cout<<a;
return;
}
int all=1;
for(string::iterator it=a.begin();it!=a.end();it++){
if(*it!='0'){
all*=((int)*it-48);
}
}
fruit(to_string(all));
}
void solve()
{
string a;
cin>>a;
fruit(a);
}
signed main(void)
{
int _ = 1;
while (_--)
{
solve();
}
return 0;
}
迭代(数字写法)
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
int a;
cin >> a;
while (a >= 10)
{
int temp = 1;
while (a)
{
if (a % 10 != 0)
temp = temp * (a % 10);
a /= 10;
}
a = temp;
}
cout <<a;
}
signed main(void)
{
int _ = 1;
while (_--)
{
solve();
}
return 0;
}
第九题
dfs+辗转相除
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<vector<pair<int, int>>> MAP;
int m, n;
int num = 0;
int zzxc(int a, int b)
{
if (a < b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int d = 1;
while (d)
{
d = a % b;
a = b;
b = d;
}
return a;
}
void dfs(int i, int j)
{
if (i < 0 || i >= m || j < 0 || j >= n)
return;
MAP[i][j].second = 1;
num++;
if (!(i + 1 < 0 || i + 1 >= m || j < 0 || j >= m) && MAP[i + 1][j].second != 1 && zzxc(MAP[i][j].first, MAP[i + 1][j].first) > 1)
dfs(i + 1, j);
if (!(i - 1 < 0 || i - 1 >= m || j < 0 || j >= m) && MAP[i - 1][j].second != 1 && zzxc(MAP[i][j].first, MAP[i - 1][j].first) > 1)
dfs(i - 1, j);
if (!(i < 0 || i >= m || j + 1 < 0 || j + 1 >= m) && MAP[i][j + 1].second != 1 && zzxc(MAP[i][j].first, MAP[i][j + 1].first) > 1)
dfs(i, j + 1);
if (!(i < 0 || i >= m || j - 1 < 0 || j - 1 >= m) && MAP[i][j - 1].second != 1 && zzxc(MAP[i][j].first, MAP[i][j - 1].first) > 1)
dfs(i, j - 1);
}
void solve()
{
cin >> m >> n;
MAP.resize(m);
for (vector<vector<pair<int, int>>>::iterator it = MAP.begin(); it != MAP.end(); it++)
{
vector<pair<int, int>> t(n);
for (vector<pair<int, int>>::iterator it2 = t.begin(); it2 != t.end(); it2++)
{
int temp;
cin >> temp;
*it2 = make_pair(temp, 0);
}
*it = t;
}
int a, b;
cin >> a >> b;
dfs(a - 1, b - 1);
cout << num;
}
signed main(void)
{
int _ = 1;
while (_--)
{
solve();
}
return 0;
}
第十题
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
int n,k;
cin>>n>>k;
vector<int> nn(n);
for(vector<int>::iterator it=nn.begin();it!=nn.end();it++){
cin>>*it;
}
int num=0;
for(int i=0;i<=n-k;i++){
int temp=0;
for(int j=0;j<k;j++){
temp+=nn[i+j];
}
if(temp>=num){
num=temp;
}
}
cout<<num;
}
signed main(void)
{
int _ = 1;
while (_--)
{
solve();
}
return 0;
}