社区讨论

0pts求调

B2142求 1+2+3+...+N 的值参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m62biq7l
此快照首次捕获于
2025/01/18 23:03
去年
此快照最后确认于
2025/11/04 11:20
4 个月前
查看原帖
MnZn刚学字典树,0pts,求调!
CPP
#include<bits/stdc++.h>
using namespace std;
struct node{
    int str[26],sum;
}s[1000];
string str1;
int tot,ans,ff;
void built(){
    int t=0;
    for(int i=0;i<str1.size();i++){
        if(str1[i]=='-'){ff=1;continue;}
        if(!s[t].str[str1[i]-'0'])
        s[t].str[str1[i]-'0']=tot++;
        t=s[t].str[str1[i]-'0'];
        s[t].sum=str1[i]-'0';
    }
}
int query(){
   int t=0,s1=0;
   for(int i=0;i<str1.size();i++){
        if(str1[i]=='-') continue;
        if(!s[t].str[str1[i]-'0']) return s1;
        t=s[t].str[str1[i]-'0'];
        s1=s1*10+s[t].sum;
   }
   return s1;
}
int main(){
	int n;cin>>n;
    for(int i=1;i<=n;i++){
        ff=0;
	    int j=i;
	    while(j){
	     	char c=char(j%10+'0');
	    	str1=c+str1;
	    	j/=10;
	    }
        built();
        if(ff) ans-=query();
        else ans+=query();
        str1="";
	}
	return cout<<ans,0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...