听说灌水大佬多

灌水区

@[Diary_51](/user/925688) 官方答案很显然罢( 考虑每个`,`的贡献,那么对于一个有`,`的,那么比他大的也一定有`,`,所以找到包含当前`,`最小的数。 比如第一个 `,` 最小就是 `1,000`,两个 `,` 最小就是 `1,000,000` 所以每次乘 `1000`,然后看比这个数 $>$ 的有多少个即可
by QWQ_123 @ 2024-03-21 20:58:47


速度慢 ```cpp #include<algorithm> //含sort函数等 #include<cmath> //关于数学函数的头文件 #include<cstring> //string字符串头文件 #include<cstdio> //C语言的头文件 #include<iomanip> //用于cout<<fixed<<setprecision() #include<iostream> //含cin,cout #include<queue> //普通队列(只能一边进一边出)(先进先出) #include<deque> //双向队列(两边都可以进出)(先进先出) #include<stack> //栈(先进后出,后进先出) #include<list> //列表 #include<vector> //动态数组 #include<map> //关联式容器 #include<set> //集合 #include<climits> //INT_MAX与INT_MIN using namespace std; #define ull unsigned long long ull n; ull ans; ull wei(ull x){ //x的位数 int y=0; while(x){ y++; x/=10; } return y; } int main() { cin>>n; for(ull i=1000;/*1000开始有逗号*/i<=n;i++){ int p=wei(i)/3; //i有i的位数/3个逗号,因为都是int,所以没有小数 ans+=p; } cout<<ans<<endl; return 0; //每日一个好习惯,老师远离我 } ```
by yc123bc @ 2024-03-21 21:08:27


|