问题标题: 酷町堂:请各位dalao在模拟市赛结束1min后把各题100分答案发一下。本萌新跪求。

0
1
已解决
屠景瑞
屠景瑞
新手光能
新手光能

这次模拟有点难。

我只会1,2两题。

其他两题懵逼。

这里附带第一题和第二题100分代码:
第一题:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int a[100010],n,w,s;
int main()
{   
    cin>>n>>w;
    for(int i=0;i<n;i++){
        cin>>a[i];
        s+=a[i];
    }
    if(s>=w)
        cout<<"YES";
    else
        cout<<w-s;
    return 0;
}
第二题:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<ctime>
#include<iostream>
using namespace std;
int n,s=0;
int gcd(int a,int b)
{
    int r=a%b;
    while(r!=0){
        a=b;
        b=r;
        r=a%b;
    }
    return b; 
}
bool hz(int a,int b)
{
    if(gcd(a,b)==1)
        return true;
    else
        return false;
}
int main()
{
    cin>>n;
    for(int i=1; i<=sqrt(n); i++) {
        for(int j=sqrt(n); j<=n; j++) {
            if(i*j==n&&hz(i,j))
                s++;
        }
    }
    cout<<s*2;
    return 0;
}

 


0
已采纳
范子扬
范子扬
高级守护
高级守护
3679
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int a[100010],n,w,s;
int main()
{
    cin>>n>>w;
    for(int i=0;i<n;i++){
        cin>>a[i];
        s+=a[i];
    }
    if(s>=w)
        cout<<"YES";
    else
        cout<<w-s;
    return 0;
}
3680
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
    char s1[10010],s2[10010];
    int dp[10010];
    cin>>s1>>s2;
    int l1=strlen(s1);
    int l2=strlen(s2);
    dp[0]=1;
    for(int i=1;i<=l1;i++)
    {
        for(int j=min(l2,i);j>=1;j--)
        {
            if(s1[i-1]==s2[j-1])
                dp[j]=(dp[j]+dp[j-1])%100000007;
        }
    }
    cout<<dp[l2];
}
3681
#include <iostream>
#include <cstring> 
#include <algorithm> 
using namespace std; 
struct node
{

int w, s;
} a[50010];
int cmp(node a, node b)
{

return a.w+a.s>b.w+b.s;
}

int main()
{

int n;
long long sum; cin >> n;
sum = 0;
for(int i=0; i<n; i++)
{

cin >> a[i].w >> a[i].s; sum += a[i].w;
}

sort(a, a+n, cmp);

long long ans = -0x3f3f3f3f; for(int i=0; i<n; i++)
{

sum -= a[i].w;
ans = max(ans, sum-a[i].s);
}

cout << ans; return 0;
}
3682
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<ctime>
#include<iostream>
using namespace std;
int n,s=0;
int gcd(int a,int b)
{
    int r=a%b;
    while(r!=0){
        a=b;
        b=r;
        r=a%b;
    }
    return b; 
}
bool hz(int a,int b)
{
    if(gcd(a,b)==1)
        return true;
    else
        return false;
}
int main()
{
    cin>>n;
    for(int i=1; i<=sqrt(n); i++) {
        for(int j=sqrt(n); j<=n; j++) {
            if(i*j==n&&hz(i,j))
                s++;
        }
    }
    cout<<s*2;
    return 0;
}

 

0
0
0
0
我要回答