头像

Sakura龙

摆烂协会




离线:12天前


最近来访(78)
用户头像
憨憨_40
用户头像
bi_nian
用户头像
deligent
用户头像
记着别人的好
用户头像
一路秒杀
用户头像
czk
用户头像
AC_
用户头像
shaopu
用户头像
2850g
用户头像
Henry1
用户头像
长途
用户头像
八戒
用户头像
海兰江畔
用户头像
2580
用户头像
尽量WA
用户头像
asdaso
用户头像
Guxier
用户头像
菜就多练纟
用户头像
shinyruo319
用户头像
坚持到底

活动打卡代码 AcWing 3491. 完全平方数

Sakura龙
4个月前

尽量要开大数据定义,因为数据越界引起的错误千奇百怪,不好找

#include <iostream>
using namespace std;
typedef long long LL;
int main()
{
    LL n;
    cin >> n;
    LL res = 1;
    for(LL i = 2;i * i <= n;i ++)
        if(n % i == 0)
        {
            int s = 0;
            while(n % i == 0)s ++,n /= i;
            if(s % 2)res *= i;
        }
    if(n > 1)res *= n;
    cout << res << endl;
    return 0;
}


活动打卡代码 AcWing 275. 传纸条

Sakura龙
4个月前
#include <iostream>
using namespace std;
const int N = 55;
int n,m;
int f[N * 2][N][N],w[N][N];
int main()
{
    scanf("%d%d",&n,&m);
    int a,b,c;
    for(int i = 1;i <= n;i ++)
        for(int j = 1;j <= m;j ++)
            scanf("%d",&w[i][j]);

    for(int k = 2;k <= m + n;k ++)
        for(int i = max(1,k - m);i <= n && i < k;i ++)
            for(int j = max(1,k - m);j <= n && j < k;j ++)
                for(int a = 0;a <= 1;a ++)
                    for(int b = 0;b <= 1;b ++)
                    {
                        int t = w[i][k - i];
                        if(i != j || k == 2 || k == n + m)
                        {
                            t += w[j][k - j];
                            f[k][i][j] = max(f[k][i][j], f[k - 1][i - a][j - b] + t);
                        }
                    }
    cout << f[n + m][n][n] << endl;
    return 0;
}


活动打卡代码 AcWing 1027. 方格取数

Sakura龙
4个月前
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 20;
int f[N * 2][N][N],w[N][N];
int n;
int main()
{
    scanf("%d",&n);
    int a,b,c;
    while(cin >> a >> b >> c,a || b || c)w[a][b] = c;
    //当i1+j1=i2+j2时,两条路径有可能重合,否则不可能重合
    for(int k = 2;k <= n + n;k ++)
        for(int i1 = 1;i1 <= n;i1 ++)
            for(int i2 = 1;i2 <= n;i2 ++)
            {
                int j1 = k - i1,j2 = k - i2;
                //判定是否符合条件
                if(j1 >= 1 && j1 <= n && j2 >= 1 && j2 <= n)
                {
                    int t = w[i1][j1];
                    //判定下一个位置两路径是否重合
                    if(i1 != i2)t += w[i2][j2];
                    int &x = f[k][i1][i2];
                    x = max(x,f[k - 1][i1 - 1][i2 - 1] + t);
                    x = max(x,f[k - 1][i1 - 1][i2] + t);
                    x = max(x,f[k - 1][i1][i2 - 1] + t);
                    x = max(x,f[k - 1][i1][i2] + t);
                }
            }
    cout << f[n + n][n][n] << endl;
    return 0;
}


活动打卡代码 AcWing 1018. 最低通行费

Sakura龙
4个月前
//通过判断2n-1,确定不能走回头路
#include <iostream>
using namespace std;
const int N = 110,INF = 1e9;
int n;
int w[N][N],f[N][N];
int main()
{
    scanf("%d",&n);
    for(int i = 1;i <= n;i ++)
        for(int j = 1;j <= n;j ++)
            scanf("%d",&w[i][j]);
    for(int i = 1;i <= n;i ++)
        for(int j = 1;j <= n;j ++)
            if(i == 1 && j == 1)f[i][j] = w[i][j];
            else
            {
                f[i][j] = INF;
                if(i > 1)f[i][j] = min(f[i][j],f[i - 1][j] + w[i][j]);
                if(j > 1)f[i][j] = min(f[i][j],f[i][j - 1] + w[i][j]);
            }
    cout << f[n][n] <<endl;
    return 0;
}


活动打卡代码 AcWing 1015. 摘花生

Sakura龙
4个月前
#include <iostream>
using namespace std;
const int N = 110;
int t;
int f[N][N],a[N][N];

int main()
{
    scanf("%d",&t);
    while(t --)
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i = 1;i <= n;i ++)
            for(int j = 1;j <= m;j ++)
                scanf("%d",&a[i][j]);
        for(int i = 1;i <= n;i ++)
            for(int j = 1;j <= m;j ++)
                f[i][j] = max(f[i - 1][j] + a[i][j],f[i][j - 1] + a[i][j]);
        cout << f[n][m] << endl;
    }
    return 0;
}


活动打卡代码 AcWing 711. 乘法表

Sakura龙
5个月前
#include <iostream>
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    for(int i = 1;i <= 10;i ++)
    printf("%d x %d = %d\n",i,n,i * n);
    return 0;
}


活动打卡代码 AcWing 710. 六个奇数

Sakura龙
5个月前
#include <iostream>
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    int k = 1;
    if(n % 2 == 0)
    for(int i = n + 1;k <= 6;i+=2,k ++)printf("%d\n",i);
    else for(int i = n;k <= 6;i+=2,k ++)printf("%d\n",i);
    return 0;
}


活动打卡代码 AcWing 715. 余数

Sakura龙
5个月前
#include <iostream>
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    for(int i = 1;i < 10000;i ++)
        if(i % n == 2)printf("%d\n",i);
    return 0;
}


活动打卡代码 AcWing 723. PUM

Sakura龙
5个月前
#include <iostream>
using namespace std;
int n,m;
int main()
{
    scanf("%d%d",&n,&m);
    int k = 1;
    for(int i = 1;i <= n;i ++)
    {
        for(int j = 1;j <= m;j ++)
        {
            if(j == m)cout << "PUM";
            else
            cout << k << " ";
            k ++;
        }
        cout << endl;
    }
    return 0;
}


活动打卡代码 AcWing 724. 约数

Sakura龙
5个月前
#include <iostream>
using namespace std;
int n;
int main()
{
    scanf("%d",&n);
    for(int i = 1;i <= n;i ++)
    if(n % i == 0)cout << i << endl;
    return 0;
}