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;
}

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/128993454