您的位置:首页 > 其它

第五天——数论。

2018-02-09 19:08 169 查看
今天我可以说我是全程懵逼的。老师讲的那是啥,我也不知道。只知道那些死记硬背的结论。
好吧因为上午的懵逼so下午不可避免德爆零了。

第一题:这一题应该是四题中最简单的吧。但我还是一分也没有代码是
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("numgame1.in","r",stdin);
freopen("numgame1.out","w",stdout);
char ch[10]={};
while(cin>>ch)
{
if(ch[0]=='E')
break;
int l=strlen(ch),p=l-1;
while(ch[p]=='0')
--p;
if(p==0 && ch[p]=='1')
puts("0");
else
{
--ch[p];
puts(ch);
}
}
fclose(stdin);
fclose(stdout);
}
当然这是正确的。我想我之前错是因为想得不太对或想复杂了。
好了第二题:是数石子的题。这一题上课好像讲过类似的,但我本来就没搞懂有老师讲我都没懂,我自己更不可能做出来了。所以我又是零分好吧代码是
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("stone.in","r",stdin);
freopen("stone.out","w",stdout);
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
puts(n%4 ? "A" : "B");
}
fclose(stdin);
fclose(stdout);

}
太不可思议了只有这么短短几行。
第三题:我看着会做但是数据太大了我的方法会爆so我又是0分。
#include<bits/stdc++.h>
using namespace std;
const int N=50050,mod=1000000007;
int n,k,a
={};
int main()
{
freopen("seqcalc.in","r",stdin);
freopen("seqcalc.out","w",stdout);
int T=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
scanf("%d",a+i);
long long ans=0;
if(k==1)
{
sort(a+1,a+n+1);
for(int i=1;i<=n;++i)
(ans+=(mod+a[i])*1ll*((i-1)+mod-(n-i))%mod)%=mod;
}
else
{
long long sqrsum=0,sumsqr=0;
for(int i=1;i<=n;++i)
{
(sqrsum+=a[i]*1ll*a[i])%=mod;
(sumsqr+=mod+a[i])%=mod;
}
sumsqr=sumsqr*sumsqr%mod;
ans=(n*sqrsum+mod-sumsqr)%mod;
}
printf("%d\n",(int)ans);
}
fclose(stdin);
fclose(stdout);

}
所以它才是正解。
第四题:是折纸的题目。我考试时我差不多没看懂。当然现在我……还是不懂啦。只能看代码理解了。
#include<bits/stdc++.h>
using namespace std;
const int N=100100;
int n,a
={},e
={},s
={};
bool check(int _)
{
fill(e+1,e+n+1,0);
for(int i=_;i+1<=n;i+=2)
{
int l=min(a[i],a[i+1]), r=max(a[i],a[i+1]);
e[l]=-1, e[r]=l;
}
int top=0;
for(int i=1;i<=n;++i)
{
if(e[i]<0)
s[++top]=i;
if(e[i]>0)
{
if(s[top]!=e[i])
return false;
--top;
}
}
return true;
}
int main()
{
freopen("folding.in","r",stdin);
freopen("folding.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",a+i);
puts(check(1) && check(2) ? "YES" : "NO");
}
fclose(stdin);
fclose(stdout);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: