XTU 1284 多项式
http://202.197.224.59/exam/index.php/problem/exam_read/id/1284/exam_id/227
思路:直接循环求解便可,注意长整型溢出的问题
(a+b)%m = a%m + b%m
可根据这个式子求解,另外注意多次方有可能溢出LL。
#include <bits/stdc++.h>
using namespace std;
#define ll __int64
int n,m,x;
int a[100];
ll qpow(ll a,ll n)//记得每次要对值取模
{
ll ret=1;
while(n)
{
if(n&1)
ret=ret*a%m;
a=a*a%m;
n>>=1;
}
return ret;
}
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%d%d%d",&n,&m,&x);
ll ans = 0;
for(int i=n;i>=0;i--)
{
scanf("%d",a+i);
ans = (ans + (ll)a[i]*(ll)qpow(x,i))%m;
}
cout<<ans<<"\n";
}
return 0;
}
XTU 1285 探测器
http://202.197.224.59/exam/index.php/problem/exam_read/id/1285/exam_id/227
思路:只要从左到右依次遍历,遇到“0”就计数,并且把相邻的全都改成“1”,这样保证结果最优。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
scanf("%d",&n);
char s[100];
scanf("%s",s);
int len=strlen(s);
int ans=0;
for(int i=0;i<len;i++)
{
if(s[i]=='0')
{
for(int j=max(0,i-2);j<=min(len-1,i+2);j++)
{
s[j]='1';
}
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}
XTU 1286 比赛
http://202.197.224.59/exam/index.php/problem/exam_read/id/1286/exam_id/227
思路: <