差分数列+字符串处理

题意:是让你判断一个整系数多项式的值是否一直都能被一个所给的正整数所整除。

通过对差分数列的不断求导,我们可以发现,对于任意多项式P,我们只需要判断n从1到k+1是否满足就行了,其中,k为多项式P中的最高次数。

可以先了解一下差分数列。

 #include <iostream>
#include <cstdio>
#include<cstdlib>
#include<cctype>
#include<string>
#include<vector>
#include<cassert>
using namespace std;
struct Polynomial
{
vector<int >a,p;
void parse_polynomial(string str)
{
int len=str.size(),i=;
while(i<len)
{
int sign=;
if(str[i]=='+')
i++;
if(str[i]=='-')
{
i++;
sign=-;
}
int v=;
while(i<len&&isdigit(str[i]))
v=v*+str[i++]-'';
if(i==len)
{
a.push_back(v);
p.push_back();
}
else
{
assert(str[i] == 'n');
if(v==)
v=;
v*=sign;
if(str[++i]=='^')
{
a.push_back(v);
v=;
i++;
while(i<len&&isdigit(str[i]))
v=v*+str[i++]-'';
p.push_back(v);
}
else
{
a.push_back(v);
p.push_back();
}
}
}
}
int mod(int x,int MOD)
{
int n=a.size();
int ans=;
for(int i=; i<n; i++)
{
int m=a[i];
for(int j=; j<p[i]; j++)
{
m=(long long)m*x%MOD;
}
ans=((long long)ans + m) % MOD;
}
return ans;
}
}; bool check(string str)
{
int p=str.find('/');
Polynomial poly;
poly.parse_polynomial(str.substr(, p-));
int D = atoi(str.substr(p+).c_str());
for(int i=; i<=poly.p[]+;i++)
{
if(poly.mod(i,D))
return false;
}
return true;
} int main()
{
int cas=;
string str;
while(cin>>str)
{
if(str[]=='.')
break;
printf("Case %d: ", cas++);
if(check(str))
printf("Always an integer\n");
else
printf("Not always an integer\n");
}
return ;
}

最新文章

  1. Linux IPC POSIX 信号量
  2. BigDecimal 转换类型
  3. 在windows下新建maven项目
  4. 深入理解Activity-任务,回退栈,启动模式
  5. Repeater控件的分页效果
  6. (二 )VMware workstation 部署虚拟集群实践——并行批量操作环境部署
  7. Effective Java之并发
  8. poj 2229 Ultra-QuickSort(树状数组求逆序数)
  9. 监控代码运行时长 -- StopWatch用法例程
  10. 转 [ javascript面向对象技术
  11. Junit4的最简单例子
  12. 基于hi-nginx的web开发(python篇)——路由装饰器
  13. 类的命名空间&amp;组合
  14. springboot秒杀课程学习整理1-3
  15. 几种content-type提交以及$_POST 和php://input
  16. Codeforces 1089E - Easy Chess - [DFS+特判][2018-2019 ICPC, NEERC, Northern Eurasia Finals Problem E]
  17. Bootstrap 引入文件顺序及IE兼容性js
  18. Oracle之外键(Foreign Key)使用方法具体解释(二)- 级联删除(DELETE CASCADE)
  19. [CC-FNCS]Chef and Churu
  20. .NET基于Eleasticsearch搭建日志系统实战演练

热门文章

  1. 如何使用PHP实现一个WebService
  2. How to Cope with Deadlocks
  3. Python 异常结构
  4. 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。
  5. node.js 模块和包
  6. 【转】Android设计中的.9.png
  7. 在XML里的XSD和DTD以及standalone的使用2----具体使用详解
  8. 【HDOJ】4322 Candy
  9. linux下进程相关操作
  10. 获取QQ所有的表情包,包括emoji,动态gif