目录
特殊日期
0特殊日期 - 蓝桥云课 (lanqiao.cn)
最大距离
0最大距离 - 蓝桥云课 (lanqiao.cn)
最长递增
0最长递增 - 蓝桥云课 (lanqiao.cn)
缩位求和
0缩位求和 - 蓝桥云课 (lanqiao.cn)
ISBN号码
0ISBN号码 - 蓝桥云课 (lanqiao.cn)
串的处理
0串的处理 - 蓝桥云课 (lanqiao.cn)
幸运数字(好抽象)
0幸运数字 - 蓝桥云课 (lanqiao.cn)
特殊日期
0特殊日期 - 蓝桥云课 (lanqiao.cn)
思路:模拟+暴力
注意:写函数的时候不要触发关键字了
完整代码:
#include <bits/stdc++.h>
#define int long long
int summ(int n)
{int ans=0;while(n){ans+=n%10;n/=10;}return ans;
}
signed main()
{int num=0;int year[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};for(int i = 1900;i <=9999;i ++){if((i%4==0&&i%100!=0)||i%400==0){year[2]=29;}elseyear[2]=28;for(int j = 1;j <= 12;j ++){for(int k = 1;k <= year[j];k ++){if(summ(i)==summ(j)+summ(k)){num++;}}}}std::cout<<num;return 0;
}
最大距离
0最大距离 - 蓝桥云课 (lanqiao.cn)
思路:模拟+暴力
完整代码:
#include <bits/stdc++.h>
#define int long long
const int N = 1e4+10;
int a[N];
signed main()
{int n;int maxx=-99999;std::cin >> n;for(int i = 1;i <= n;i ++){std::cin >> a[i];}for(int i = 1;i <= n;i ++){for(int j = 1;j <= n;j ++){maxx=std::max(abs(i-j)+abs(a[i]-a[j]),maxx);}}std::cout<<maxx;return 0;
}
最长递增
0最长递增 - 蓝桥云课 (lanqiao.cn)
思路:模拟+暴力
注意判断什么时候计数的长度应该+1,什么时候应该更新要输出的最大值
完整代码:
#include <bits/stdc++.h>
#define int long long
const int N = 1e4+10;
int a[N];
signed main()
{int n;int num=1;int maxx=-99999;std::cin >> n;for(int i = 1;i <= n;i ++){std::cin >> a[i];}for(int i = 2;i <= n;i ++){if(a[i]>a[i-1])num++;else{maxx=std::max(maxx,num);num=1;}}std::cout<<maxx;return 0;
}
缩位求和
0缩位求和 - 蓝桥云课 (lanqiao.cn)
思路:暴力+模拟
注意:输入的数字有可能很大,要用字符串来存
完整代码:
#include <bits/stdc++.h>
#define int long long
int fun(int sum)
{int ans=0;while(sum!=0) {ans += sum % 10;sum /= 10;}return ans;
}
signed main()
{std::string s;std::cin >> s;int n = s.length();int sum=0;for(int i = 0;i < n;i ++){sum+=s[i]-'0';}while(sum!=0){sum=fun(sum);if(sum/10==0){break;}}std::cout<<sum;return 0;
}
ISBN号码
0ISBN号码 - 蓝桥云课 (lanqiao.cn)
思路:暴力+模拟
注意:仔细读题,题目中说到了ans%11==10的时候,最后一位就要改为大写的X
完整代码:
#include <bits/stdc++.h>
#define int long long
const int N = 110;
int a[N];
signed main()
{std::string s;std::cin >> s;s=" "+s;int k = 1;for(int i = 1;i <= 13;i ++){if(i==2||i==6||i==12)continue;elsea[k++]=s[i]-'0';}int ans=0;for(int i = 1;i <= 9;i ++){ans+=i*a[i];}if(ans%11==10){if(s[13]=='X'){std::cout<<"Right";}else{s[13]='X';std::cout<<s;}}else if(ans%11==s[13]-'0'){std::cout<<"Right";}else{s[13]=ans%11+'0';std::cout<<s;}return 0;
}
串的处理
0串的处理 - 蓝桥云课 (lanqiao.cn)
思路:模拟+暴力
注意:
可以试试特例:l1 l2 l3
t它的输出应该是L_1 L_2 L_3
完整代码:
#include<bits/stdc++.h>
#define int long long
signed main()
{std::string s;getline(std::cin,s);int n = s.length();s=" "+s;int flag=0;for(int i = 1;i <= n;i ++){if(s[i-1]==' '&&s[i]==' '){continue;}if(s[i-1]==' '&&s[i]>='a'&&s[i]<='z'){s[i]=toupper(s[i]);}if(((s[i-1]>='a'&&s[i-1]<='z')||(s[i-1]>='A'&&s[i-1]<='Z'))&&s[i]-'0'>=0&&s[i]<='9'){std::cout<<"_";}if(s[i-1]-'0'>=0&&s[i-1]-'0'<=9&&((s[i]>='a'&&s[i]<='z')||(s[i]>'A'&&s[i]<='Z'))){std::cout<<"_";}std::cout<<s[i];}return 0;
}
幸运数字(好抽象)
0幸运数字 - 蓝桥云课 (lanqiao.cn)
好抽象,懂了但好像没完全懂
完整代码:
#include <bits/stdc++.h>
#define int long long
int fun(int N,int a)//把十进制N转化为a进制字符串
{int sum=0;while(N!=0){sum+=N%a;N/=a;}return sum;
}
signed main()
{int sum,N;for(int i = 1,N=1;N <= 2023;i ++){if(i%fun(i,2)==0&&i%fun(i,8)==0&&i%fun(i,10)==0&&i%fun(i,16)==0){N++;sum=i;}}std::cout<<sum;return 0;
}