🎈帅学长的爱心
题意
输出0或者1 ,0时输出0 ,1时输出指定的爱心
思路
给出了公式,按照公式输出就行
AC代码
#include<stdio.h>
int main()
{
int n;
while(~scanf("%d",&n)){
if(n==1){
for(double i=1.5;i>=-1.5;i-=0.1){
for(double j=-1.5;j<=1.5;j+=0.05){
double k=j*j+i*i-1.0;
if(k*k*k<=j*j*i*i*i){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
}
else{
printf("0\n");
}
}
return 0;
}
🎈秋姐妹鸣泣之时 秋日天空下
题意
输入n,给n行01字符串,每个0和1都可以变成0或者1,如果能全部变成0,输出qiurangzi,不能就输出qiujingye
思路
总有一种情况会全变成0,所以直接输出qiurangzi即可
<font color=#66CDAA><h3>AC代码</h3></font>
#include<stdio.h>
#include<string.h>
int main()
{
int n;
char s[1000];
while(~scanf("%d",&n)){
while(n--){
scanf("%s",s);
printf("qiurangzi\n");
}
}
return 0;
}
🎈王韬韬学长之喝可乐
题意
输入一个数字n,代表可以拿到n个空瓶子,4个空瓶子可以换一瓶可乐,然后三个空瓶子可以问老板借一个,换完可乐后还完。
思路
因为三个空瓶子可以换完,所以直接除3即可
AC代码
#include<stdio.h>
#include<string.h>
int main()
{
long long n;
while(~scanf("%lld",&n)){
printf("%lld\n",n/3);
}
return 0;
}
🎈Thanos sort 灭霸の无限手套
题意
数组三等分,然后获得最长非降序数组的大小是多少
思路
暴力模拟
AC代码
#include<stdio.h>
int a[88];
int main()
{
int t,n;
while(~scanf("%d",&t)){
while(t--){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int minn=1;
for(int i=3;i<=n;i*=3){
for(int j=1;j<=n;j+=i){
int f=0;
for(int k=j+1;k<j+i;k++){
if(a[k-1]>a[k]){
f=1;
break;
}
}
if(!f){
minn=i;break;
}
}
}
printf("%d\n",minn);
}
}
return 0;
}
🎈云云姐的奇妙键盘
题意
键盘输入0,会输出两个1,现在给一串数字字符串,问有多少种输入情况
思路
斐波那契(参考跳阶梯)
AC代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<functional>
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define ll long long
#define mod 1000000007
using namespace std;
const int maxn=1e5+10;
int dp[maxn];
char s[maxn];
int main(){
while(~scanf("%s",s+1)){
int l=strlen(s+1);
dp[0]=1,dp[1]=1;
for(int i=2;i<=l;i++){
if(s[i]=='1' && s[i-1]=='1'){
dp[i]=(dp[i-1]+dp[i-2])%mod;
}
else{
dp[i]=dp[i-1];
}
}
printf("%d\n",dp[l]);
}
return 0;
}
<font color=#1C86EE><h2>🎈云云姐想要染色</h2></font>
<font color=#66CDAA><h3>题意</h3></font>
给了1,2,3种颜色的位置,给1,2,3颜色的每个位置的价钱,求最小总价即可
<font color=#66CDAA><h3>思路</h3></font>
暴力模拟
AC代码
#include<stdio.h>
int min(int a,int b){
return a<b?a:b;
}
int a[1010][3];
int q,p,n;
int jia[1010];
int main()
{
while(~scanf("%d",&n)){
for(int i=0;i<3;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[j][i]);
}
}
for(int i=0;i<n;i++){
scanf("%d",&jia[i]);
jia[i]--;
}
int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0;
for(int i=0;i<n;i++){
if(jia[i]==0){
sum1+=a[i][0];
sum2+=a[i][1];
sum3+=a[i][2];
sum4+=a[i][0];
sum5+=a[i][1];
sum6+=a[i][2];
}
else if(jia[i]==1){
sum1+=a[i][1];
sum2+=a[i][2];
sum3+=a[i][0];
sum4+=a[i][2];
sum5+=a[i][0];
sum6+=a[i][1];
}
else if(jia[i]==2){
sum1+=a[i][2];
sum2+=a[i][0];
sum3+=a[i][1];
sum4+=a[i][1];
sum5+=a[i][2];
sum6+=a[i][0];
}
}
int mi=min(min(min(sum1,sum4),min(sum2,sum3)),min(sum5,sum6));
printf("%d\n",mi);
}
return 0;
}
🎈 云云姐梦游仙境之决战史莱姆
题意
输入n,再输入n个数,再输出数字m,问n个数里面的一些数字可不可以组成m
思路
dfs或者dp都可以过
AC代码
#include<stdio.h>
const int maxn=1e4+10;
int a[15],m,n;
bool flag;
void dfs(int i,int sum){
if(sum==m){
flag=true;return;
}
if(i==n){
return;
}
if(flag){
return;
}
dfs(i+1,sum+a[i]);
dfs(i+1,sum);
}
int main()
{
while(~scanf("%d",&n)){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
flag=false;
dfs(0,0);
if(flag){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}
🎈王韬韬学长之买绳子
题意
题目说的比较清晰了,这里就不说了
思路
前缀和+求和公式
AC代码
#include<iostream>
#include<algorithm>
#include<math.h>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int maxn=100005;
int main()
{
int p[maxn],p1[maxn],n,m,q;
while(~scanf("%d%d",&n,&m)){
p[0]=0;
memset(p1,0,sizeof(p1));
for(int i=1;i<=n;i++){
scanf("%d",&q);
p[i]=(p[i-1]+q)%m;//统计每个数包括他之前所有数之后和m的余数
p1[p[i]]++;//统计余数的数量
}
ll sum=0;
for(int i=0;i<m;i++){
if(!i){
sum=sum+p1[0]+(ll)p1[0]*(p1[0]-1)/2;//当余数为0的时候,我们共有p1[0]+(ll)p1[0]*(p1[0]-1)/2种选择
}
else{
sum=sum+(ll)p1[i]*(p1[i]-1)/2;//当余数不为0的时候,我们共有p1[i]*(p1[i]-1)/2种选择
}
}
printf("%lld\n",sum);
}
return 0;
}
🎈Zxh学长的奇妙游戏
题意
这题题目也是比较清晰了,这里就不说了
思路
找下规律,前缀和,然后排序,加n-m
AC代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<algorithm>
#include<functional>
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=3e6+10;
int s[maxn];
int t,n,m,a,b;
int main()
{
while(~scanf("%d%d",&n,&m)){
scanf("%d",&a);
int aa=a;
if(n==1){
printf("0\n");continue;
}
int t=0;
for(int i=1;i<n;i++){
scanf("%d",&b);
s[t++]=b-a;
a=b;
}
if(m==1){
printf("%d\n",b-aa);continue;
}
sort(s,s+t);
int sum=0;
for(int i=0;i<n-m;i++){
sum+=s[i];
}
printf("%d\n",sum);
}
return 0;
}
🎈众神所眷恋的幻想乡
题意
题目过长,emmm,就是有两个boss有特殊技能,也会横、竖技能,一个boss会地图全覆盖,但问题是boss的实体的会挡住boss的技能走向,另一个boss会斜着发射十字架的技能。问有没有地方可以全躲,如果有输出yes,横坐标最小,再选择纵坐标最小;如果无,输出no
思路
模拟
AC代码
#include<iostream>
#include<cstring>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
using namespace std;
int g[110][110];
int n,m,k,sx,sy,t,xx,yy,ji;
void jiuheng(int x,int y){
if(sx==x && sy==y){return;}
for(int i=y;i<=m;i++){
if(sx==x && sy==i){break;}
g[x][i]=1;
}
for(int i=y;i>=1;i--){
if(sx==x && sy==i){break;}
g[x][i]=1;
}
}
void jiuzhong(int x,int y){
if(sx==x && sy==y){return;}
for(int i=x;i<=n;i++){
if(sx==i && sy==y){break;}
g[i][y]=1;
}
for(int i=x;i>=1;i--){
if(sx==i && sy==y){break;}
g[i][y]=1;
}
}
void er(int x,int y){
int x1=x,y1=y;if(sx==x1 && sy==y1){return;}
while(x1>0 && y1>0){
g[x1][y1]=1;x1--;y1--;if(sx==x1 && sy==y1){break;}
}
x1=x,y1=y;
while(x1<=n && y1>0){
g[x1][y1]=1;x1++;y1--;if(sx==x1 && sy==y1){break;}
}
x1=x,y1=y;
while(x1>0 && y1<=m){
g[x1][y1]=1;x1--;y1++;if(sx==x1 && sy==y1){break;}
}
x1=x,y1=y;
while(x1<=n && y1<=m){
g[x1][y1]=1;x1++;y1++;if(sx==x1 && sy==y1){break;}
}
}
void dd(int a,int b,int c){
if(sx==a && sy==b){return;}
if(c==1){
jiuheng(a,b);
}else if(c==2){
jiuzhong(a,b);
}else{
if(k==9){
for(int i=b;i<=m;i++){
if(sx==a && sy==i){break;}
jiuzhong(a,i);
}
for(int i=b;i>=1;i--){
if(sx==a && sy==i){break;}
jiuzhong(a,i);
}
}else{
er(a,b);
}
}
}
int main(){
while(~scanf("%d%d%d%d%d%d",&n,&m,&k,&sx,&sy,&t)){
mem(g,0);
g[sx][sy]=2;
for(int i=0;i<t;i++){
scanf("%d%d%d",&ji,&xx,&yy);
dd(xx,yy,ji);
}
int aa=1;g[sx][sy]=2;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!g[i][j]){
printf("yes\n%d %d\n",i,j);
aa=0;break;
}
}
if(!aa){break;}
}
if(aa){
printf("no\n");
}
}
return 0;
}
🎈顾十二的神秘数字
题意
这题是pat乙级的原题,题意很清楚
思路
模拟 或者 搜索
AC代码
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<vector>
#include<assert.h>
#include<cstring>
#include<map>
#include<stack>
#include<queue>
#define ll long long
using namespace std;
int xj(int x){
int su=0;
while(x){
su+=x%10;
x/=10;
}
return su;
}
bool prime(int a){
if(a<3){
return false;
}
for(int i=2;i*i<=a;i++){
if(a%i==0){
return false;
}
}
return true;
}
struct node{
int x,y;
};
node a[5000000];
bool cmp(node a,node b){
if(a.x==b.x){
return a.y<b.y;
}
else{
return a.x<b.x;
}
}
int gcd(int a,int b){
return a%b==0?b:gcd(b,a%b);
}
int main()
{
int t,k,m;
int i;
while(~scanf("%d",&t)){
while(t--){
scanf("%d%d",&k,&m);
int d=1;
int e=0;
for( i=1; i<k; i++){
d*=10;
}
for(i=d+99;i<=d*10; i+=100){
if(xj(i)==m&&prime(gcd(xj(i+1),xj(i)))){
a[e].x=xj(i+1);
a[e++].y=i;
}
}
if(e==0){
printf("N0 Solution\n");
}
else{
sort(a,a+e,cmp);
for(i=0;i<e;i++){
printf("%d %d\n",a[i].x,a[i].y);
}
}
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define ll long long
const int N = 100001;
const ll mod = 1000000007;
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
int isp(int n){
if(n<=2)return 0;
for(int i=2;i*i<=n;i++)
if(n%i==0)return 0;
return 1;
}
int fg;
int a[20];
void dfs(int l,int ed,int num,int n,int x){
if(num<0)return ;
if(l==ed){
if(num>8)return ;
cout<<x<<" ";
for(int i=1;i<ed;i++)cout<<a[i];
cout<<num;
for(int i=0;i<n;i++)cout<<9;
cout<<endl;
fg=1;
return ;
}
for(int i=0;i<10;i++){
if(i==0&&l==1)continue;
a[l]=i;
dfs(l+1,ed,num-i,n,x);
}
}
int main()
{
int t,k,m;
cin>>t;
while(t--){
fg=0;
cin>>k>>m;
for(int i=k-1;i>0;i--){
int n=m-i*9+1;
if(n<=0)continue;
if(isp(gcd(n,m))){
dfs(1,k-i,n-1,i,n);
}
}
if(!fg)cout<<"N0 Solution"<<endl;
}
return 0;
}
记得补题,题目两小时半还是挺困难ak的,毕竟我验题也验了几天的时间,题目基本没有锅。题目基本属于简单题
我的三道题都是很基本的题目,希望大家补题
这些题解都是我写的,如果有疑问可以qq问我
所有的核心代码都是c语言构成,无除社团课之外的知识点。