CSDN竞赛第27期题解

Posted 酷酷的Herio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSDN竞赛第27期题解相关的知识,希望对你有一定的参考价值。

CSDN竞赛第27期题解

1、题目名称:幸运数字

小艺定义一个幸运数字的标准包含3条: 1、仅包含4或7。 2、幸运数字的前半部分数字之和等于后半部分数字之和。 3、 数字的长度是偶数。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define ios ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);

template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;

template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;

int main()
string s;cin>>s;
int n = s.size();
if(n&1)
return puts("No"),0;

int s1=0,s2=0;
for(int i=0;i<n;i++)
if(s[i]!='4'&&s[i]!='7') 
return puts("No"),0;

if(i<n/2) s1+=s[i]-'0';
else s2+=s[i]-'0';

if(s1!=s2)
return puts("No"),0;

puts("YES");
return 0;

2、题目名称:投篮

小明投篮,罚球线投球可得1分,在三分线内投篮得分可以得到2分,在三分线以外的地方投篮得分可以得到3分,连续投 进得分累计,一旦有一个球没投进则得分清零,重新计算。现给出所有得分记录(清零不计入得分),请你计算一下小明 最多连续投进多少个球?

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);

template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;

template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;

int a[N];
int main()
int n;cin>>n;
rep(i,1,n)
cin>>a[i];

int cnt=0,ans=0;
for(int i=1;i<=n;i++)
if(a[i]>a[i-1])
cnt++;

else 
ans=max(ans,cnt);
cnt=1;


if(cnt) ans=max(ans,cnt);
cout<<ans<<'\\n';
return 0;


3、题目名称:通货膨胀-x国货币

X国发行货币最高面额为n。 次高面额为n的因子。 以此类推。 X国最多发行多少种货币。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);

template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;

template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;

int a[N];
int main()
int n;cin>>n;
ll s= 1;
for(int i=2;i*i<=n;i++)
while(n%i==0)
n/=i;
s++;


if(n!=1) s++;
// s++;
cout<<s<<"\\n";
return 0;


4、题目名称:最后一位

小明选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过 程中,小明会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum. 例如X = 509, 在黑板上出现过的数字依次 是509, 50, 5, 他们的和就是564. 小明现在给出一个sum,小明想让你求出一个正整数X经过上述过程的结果是sum.

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);

template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;

template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;

int fun(ll s)
int x=0;
while(s!=0)
x++;
s/=10;

return x;

ll ksm(ll a,ll n,ll m=mod)
ll ans=1;
while(n)
if(n&1) ans=ans*a%m;
a=a*a%m;
n>>=1;

return ans;

int main()

ll s;
cin>>s;
int l = fun(s);
for(int i=1;i<=l;i++)
db a = pow(10,i)-1;
db b = 9*pow(10,i-1);
db num = a/b;
ll x = s/num;
for(ll uu=x-20;uu<=x+20;uu++)
ll t = uu;
ll v = 0;
while(t!=0)
v += t;
t /= 10;

if(v == s)
cout<<uu;
return 0;



cout<<"-1";
return 0;

以上是关于CSDN竞赛第27期题解的主要内容,如果未能解决你的问题,请参考以下文章

CSDN竞赛第32期题解

CSDN竞赛第32期题解

CSDN竞赛第28期题解

CSDN竞赛第28期题解

CSDN竞赛第33期题解

CSDN竞赛第33期题解