时间:2021-07-01 10:21:17 帮助过:19人阅读
n多的WA................................自己的代码能力还是很有问题的.......................
总结下自己写代码的状态:
1、没有理清思路就开始写......
2、排错的时候,应该好好理理自己的逻辑,看看代码是否把自己的逻辑表达清楚
3、看别人代码的时候,别老是想着看不懂,那么你一定看不懂,理理思路,尤其模拟下,试试去理解。
4、排错的时候,不要稍微改动一点点,就重新跑一下程序,这样很花时间,基本确定没有可以改的地方了,再去跑
5、不要死盯着自己的思路,WA掉之后,跳出自己原来的思路看看,试试
GCD幂次在sum-pri[n]-sum之间,枚举次数,那个循环写的还是可以的,好好看下-------其实还是我的代码能力不行,难以用代码表达出自己想做的东西
#include#include #include #include #include #include using namespace std;#define ll long longconst ll MOD = 1000000007;const int SIZE = 1e5+10;ll num[SIZE];ll Qmod(ll base,ll n){ ll ret=1; while(n) { if(n&1) ret=ret*base%MOD; base=base*base%MOD; n>>=1; } return ret;}int main(){ ll x,sum,tmpn; ll n; while(scanf("%I64d%I64d",&n,&x)!=EOF) { scanf("%I64d",&num[1]); sum=num[1]; for(ll i=2;i<=n;i++) { scanf("%I64d",&num[i]); sum+=num[i]; } tmpn=sum-num[n]; for(ll p=num[n],cc=0;p>0;p--) { while(n&&num[n]==p) { n--; cc++;//1的个数 } if(cc%x)break; tmpn++; cc/=x; } printf("%I64d\n",Qmod(x,tmpn)); } return 0;}