问题标题: 酷町堂:2697 拆分整数

0
0
已解决
杨淮乐
杨淮乐
资深守护
资深守护
#include<bits/stdc++.h>
#include<iostream>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<cstring>
using namespace std;
string s;
long long h,j=1;
int main(){
    cin>>s;
    if(s[s.size()-1]%2==0){
        for(int i=0;i<=s.size()-1;i++) h+=s[i]-'0';
        cout<<"H="<<h;
    }
    else if(s[s.size()-1]%2!=0){
        for(int i=0;i<=s.size()-1;i++){
            if(s[i]=='0') continue;
            else j*=s[i]-'0';
        }
        cout<<"J="<<j;
    }
    return 0;
}

70分代码;

 


1
已采纳
被禁言 张皓轩
张皓轩
中级光能
中级光能
核心:
void Mul(){
    memset(c,0,sizeof(c));
    c[0]=a[0]+b[0];
    for(int i=1;i<=a[0];i++){
        for(int j=1;j<=b[0];j++){
            c[i+j-1]+=a[i]*b[j];
        }
    }
    int jw=0;
    for(int i=1;i<=c[0];i++){
        c[i]=c[i]+jw;
        jw=c[i]/10;
        c[i]%=10;
    }
    while(c[c[0]]==0){
        c[0]--;
    }
}
void swap(){
    a[0]=c[0];
    for(int i=1;i<=c[0];i++){
        a[i]=c[i];
    }
}
int main(){
    cin>>s;
    if(((int)s[s.size()-1]-48)%2==0){
        long long sum=0;
        for(int i=0;i<s.size();i++){
            sum+=s[i]-48;
        }
        cout<<"H="<<sum;
    }else{
        c[0]=1;
        c[1]=1;
        for(int i=0;i<s.size();i++){
            swap();
            b[0]=1;
            b[1]=(int)s[i]-48;
            Mul();
        }
        cout<<"J=";
        for(int i=c[0];i>=1;i--){
            cout<<c[i];
        }
}
定义:
int a[1005],b[1005],c[1005];
string s;
头文件:
#include<iostream>
#include<string>
#include<cstring>

 

0
武奕楷
武奕楷
新手天翼
新手天翼

要用高精度,我也才70分

0
潘艺博
潘艺博
初级天翼
初级天翼

要用到高精度

所以没学过的想做是做不出来的

潘艺博在2021-09-10 21:00:49追加了内容

我可没水,刚开始我也70,这是我问老师问出来的

我要回答