3075. 素进制链表

150042

%I64d好像过不了,变成lld就能过了

Master X

OJ刷题技巧之——————
我为什么要用链表?

10175102262 LarsPendragon

链表是学不会的,这辈子都学不会的。STL也会不用,只有用数组这种东西,才能勉强刷得了OJ

Li Dao

最近是wa疯了。。。求指点
两个错误数据:
n=0
n=12345678912345678
第二个数据错误的具体原因没仔细找

Li Dao

渣渣的一点程序
我这渣渣是写不来链表这种高级的东西的。自己瞎搞了一通。
我这破玩意n为0要特判一下。

include

using namespace std;

define LL long long

int T;
int su[10010];
vector Su;
vector ans;
void solve()
{
LL n,pos=0;
cin>>n;
ans.clear();
if(n==0)
{
cout<<”0;”<=0;i–) cout<<ans[i]<<”;”;
cout<<endl;
return;
}

void init()
{
for(LL i=2;i<=10000;i++) su[i]=1;
for(LL i=2;i<=10000;i++)
if(su[i])
{
for(LL j=i*2;j<=10000;j+=i) su[j]=0;
}
for(LL i=2;i<=10000;i++) if(su[i]) Su.push_back(i);
return;
}
int main()
{
scanf(“%d”,&T);
init();
for(int step=0;step<T;step++)
{
printf(“case #%d:\n”,step);
solve();
}
return 0;
}

10175102262 LarsPendragon

43是质数!43是质数!43是质数!重要的事情说三遍。
附C代码:(特判?不存在的)

#include <stdio.h>
int main()
{
    long long weight[16]={1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
    int T, I;
    for(I=1; I<16; I++) weight[I]*=weight[I-1];//计算权重
    scanf("%d",&T);
    for(I=0; I<T; I++)
    {
        long long n, i, ans[16]={0};
        scanf("%lld",&n);
        for(i=15; i; i--)
        {
            if(n>=weight[i]) ans[i]=n/weight[i];
            n%=weight[i];
        }
        ans[0]=n;
        printf("case #%d:\n",I);
        for(i=15; i; i--) if(ans[i]) break;
        for(; i+1; i--) printf("%lld;",ans[i]);
        putchar('\n');
    }
    return 0;
}
你当前正在回复 博客/题目
存在问题!