24kcsplus
文章12
标签15
分类0
刷题记录

刷题记录

刷题记录

1.P1179 [NOIP2010 普及组] 数字统计

解题思路:

声明一个整型变量,作为计数器,再计算两个值之间2的出现次数

核心代码:

while(g!=0){
            if(g%10==2)ans++;
            g/=10;
        }

我的代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
    int l,r,ans=0;
    cin>>l>>r;
    for(int i=l;i<=r;i++){
        int g=i;
        while(g!=0){
            if(g%10==2)ans++;
            g/=10;
        }
    }
    cout<<ans<<endl;
    return 0;
}

2.P1307 [NOIP2011 普及组] 数字反转

解题思路:

声明待输入数和输出数,输出数扩充一位给输入数最后一位,输入数再舍去最后一位

核心代码:

for(na;na!=0;na/=10) nb=nb*10+na%10;

我的代码

#include <iostream>
using namespace std;

int na,nb=0;

int main(){
    cin>>na;
    for(na;na!=0;na/=10) nb=nb*10+na%10;
    cout<<nb;
}

3.P1075 [NOIP2012 普及组] 质因数分解

解题思路:

从小到大轮流除,找到最小因数,质因数/最小因数=最大因数

核心代码:

    for(int i=2;i<=n;++i){
        if(n%i==0){
            cout<<n/i;
            return 0;
        }
    }

我的代码:

#include <cstdio>
#include <iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    for(int i=2;i<=n;++i){
        if(n%i==0){
            cout<<n/i;
            return 0;
        }
    }
}

4.P1980 [NOIP2013 普及组] 计数问题

解题思路:

每个数都进行判断,使用计数器计数

核心代码:

for(i=1;i<=n;i++){
        temp=i;
        while(temp!=0){
            t=temp%10;
            temp/=10;
            if(t==x) c++;
        }

我的代码:

#include <iostream>
using namespace std;

int n,x,temp,i,t,c;

int main(){
    cin>>n>>x;
    for(i=1;i<=n;i++){
        temp=i;
        while(temp!=0){
            t=temp%10;
            temp/=10;
            if(t==x) c++;
        }
    }
    cout<<c<<endl;
    return 0;
}

5.P2141 [NOIP2014 普及组] 珠心算测验

解题思路:

暴力查找

核心代码:

for(i=1;i<=n;i++){
        cin>>a[i];
        tf[a[i]]++;
    }
    for (i=1;i<=n;i++){
        for(g=1+1;g<=n;g++){
            ti[a[i]+a[g]]++;
            mn=max(mn,a[i]+a[g]);
        }
    }
    for(i=1;i<=mn;i++){
        if(ti[i]>0&&tf[i]) ans++;
    }

我的代码:

#include <iostream>
#include <cstdio>
using namespace std;

const int M=20005;
int ti[M],tf[M],n,a[205],ans,mn,i,g;

int main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a[i];
        tf[a[i]]++;
    }
    for (i=1;i<=n;i++){
        for(g=1+1;g<=n;g++){
            ti[a[i]+a[g]]++;
            mn=max(mn,a[i]+a[g]);
        }
    }
    for(i=1;i<=mn;i++){
        if(ti[i]>0&&tf[i]) ans++;
    }
    cout<<ans;
}

6.P2669 [NOIP2015 普及组] 金币

解题思路:

自加,后减去超出部分

核心代码:

    for(i=1;k-i>0;k-=i++){
        coin+=i*i;
    }
    cout<<coin+k*i;

我的代码:

#include <cstdio>
#include <iostream>
using namespace std;

long long int k,i,coin;

int main(){
    cin>>k;
    for(i=1;k-i>0;k-=i++){
        coin+=i*i;
    }
    cout<<coin+k*i;
}
本文作者:24kcsplus
本文链接:https://24kblog.top/posts/4267985632/
版权声明:除非特别声明,否则本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×