模拟一遍即可。
注意一些特殊情况,见代码。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 10005;
struct Ploy{
int cnt;//项的数目
int coe[ maxn ];//各项系数
int exp[ maxn ];//各项指数
}a;
struct Ploy2{
int coe1,coe2;
int exp1,exp2;
}b;
struct Ploy3{
int coe,exp;
}tmp;
bool Judge( int aim ){
//bool f = false;
for( int i=a.cnt-1;i>=0;i-- ){
if( a.coe[i]!=0&&a.exp[i]>=aim ){
//f = true;
return true ;
}
}
return false;
}
void solve( int n,int k ){
//ans.cnt = 0;
while( 1 ){
//if( Judge(k)==false ) break;
int i;
for( i=a.cnt-1;i>=0;i-- ){
if( a.coe[i]!=0 ){
tmp.coe = a.coe[i];
tmp.exp = a.exp[i];
break;
}
}
if( tmp.exp<k ) break;
int delta_exp = tmp.exp-k;
int delta_coe = tmp.coe;//商
b.exp1 = tmp.exp,b.coe1 = tmp.coe;
b.exp2 = delta_exp,b.coe2 = delta_coe;
//bool f1 = false,f2 = false;
for( int i=0;i<a.cnt;i++ ){
if( a.exp[i]==b.exp1 ){
a.coe[i] -= b.coe1;
//f1 = true;
}
if( a.exp[i]==b.exp2 ){
a.coe[i] -= b.coe2;
//f2 = true;
}
}
}
}
int main(){
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,k;
while( scanf("%d%d",&n,&k)==2 ){
if( n==k&&k==-1 ) break;
a.cnt = 0;
for( int i=0;i<=n;i++ ){
a.cnt ++;
scanf("%d",&a.coe[i]);
a.exp[i] = i;
}
if( k==0 ){
puts("0");
continue;
}
//printf("input\n");
bool f = false;
for( int i=0;i<a.cnt;i++ ){
if( a.coe[i]!=0 ){
f = true;
break;
}
}
if( f==false ) {
puts("0");
continue;
}//多项式全为0
if( k>n ){
for( int i=0;i<a.cnt;i++ ){
if( i==0 ) printf("%d",a.coe[i]);
else printf(" %d",a.coe[i]);
}
printf("\n");
continue;
}//商为0
//printf("solve\n");
solve( n,k );
f = false;
for( int i=0;i<a.cnt;i++ ){
if( a.coe[i]!=0 ){
f = true;
break;
}
}
if( f==false ) {
puts("0");
continue;
}//刚好整除
int pos = a.cnt-1;
for( int i=a.cnt-1;i>=0;i-- ){
if( a.coe[i]!=0 ){
pos = i;
break;
}
}
for( int i=0;i<=pos;i++ ){
if( i==0 ) printf("%d",a.coe[i]);
else {
printf(" %d",a.coe[i]);
}
}
printf("\n");
}
return 0;
}
分享到:
相关推荐
2867题可能涉及到模拟或回溯法;3114题则可能需要解决复杂度较高的计算问题。 通过学习这些源代码,读者不仅可以了解到每种问题的通用解题思路,还能看到具体的实现细节,这对于理解和提升编程技巧极其有益。同时,...
2505 2521 2538 2546 2551 2590 2593 2601 2665 2680 2739 2752 2761 2762 2777 2800 2891 2893 2992 3030 3041 3132 3159 3187 3204 3270 3277 3281 3297 3321 3414 3436 3461 3650 3663 3664 3672 3740
标题中的“poj2488.rar_poj24_poj2488_方向模板法”指的是一个解决编程竞赛问题POJ2488的压缩文件,其中可能包含了解决该问题的代码示例。POJ是Programming Online Judge的缩写,是一个在线的编程竞赛平台,参与者...
标签"poj poj_27 poj27 poj2775"进一步确认了这是一道关于POJ平台的编程挑战,其中"poj_27"可能是表示第27类问题或者某种分类,而"poj27"可能是对"poj2775"的简写。 压缩文件中的"www.pudn.com.txt"可能是一个链接...
1. **整数除法**:在编程中,除法有两种类型——整数除法(例如,C++中的`/`操作符)和浮点数除法。对于整数除法,如果除不尽,结果将向下取整到最接近的整数。 2. **取余运算**:`%`运算符用于获取两个整数相除后...
* 哈希表和二分查找等高效查找法:例如 poj3349、poj3274、poj2151、poj1840、poj2002、poj2503。 * 哈夫曼树:例如 poj3253。 * 堆:例如 poj2513。 * trie 树:例如 poj2513。 4. 简单搜索: * 深度优先搜索...
* 哈希表和二分查找等高效查找法:哈希表和二分查找等高效查找法是指解决问题的高效查找算法,如 poj3349、poj3274、POJ2151、poj1840、poj2002、poj2503。 * 哈夫曼树:哈夫曼树是指解决问题的哈夫曼树算法,如 poj...
- (poj2031, poj1039):数值分析中的逼近算法,如牛顿迭代法等。 4. **模拟**: - 通过模拟实际场景来解决问题。 5. **统计与随机**: - 统计分析与随机算法的应用。 ### 七、进阶算法 1. **C++标准模板库**...
"西北工业大学POJ试题C++答案代码+课程设计"这一标题表明了资源的主要内容,涉及两个核心部分:一是西北工业大学的编程竞赛(POJ,Problem Oriented Judge System)的C++解题代码,二是与这些题目相关的课程设计。...
"同余模"则是数论中的概念,涉及整数除法后余数相等的性质,常常在解决整数关系问题时使用。 【解析】在POJ1426问题中,可能的任务是找到某个数n的所有倍数,或者是在一定范围内找到特定条件下的倍数。使用BFS,...
【标题】"POJ.rar_poj java_poj1048" 涉及的知识点主要围绕编程竞赛中的“约瑟夫环”问题,这里是一个加强版,使用Java语言进行解决。 【描述】"POJ1048,加强版的约瑟夫问题 难度中等" 提示我们,这个问题是编程...
数论中GCD(最大公约数)和LCM(最小公倍数)的计算,以及多项式的乘法和除法,都是经常遇到的问题。例如,题目poj3101就涉及到GCD的计算。 ### 6. 字符串算法 字符串算法处理字符串的匹配、分割、排序等问题,...
【标题】"POJ1159-Palindrome" 是北京大学在线编程平台POJ上的一道编程题目。这道题目主要考察的是字符串处理和回文判断的知识点。 【描述】"北大POJ1159-Palindrome 解题报告+AC代码" 暗示了解决这道问题的方法和...
模拟法是对题目场景的直接模拟,适用于逻辑清晰、规则明确的问题,如poj1068和poj2632。虽然这种方法直观易懂,但在复杂度较高的情况下,效率可能不如更高级的算法。 ### 二、图算法 #### 图的遍历 包括深度优先...
- 模拟法:按照题目描述的规则进行操作,直至得到结果,如`poj1068, poj2632, poj1573`。 - **图算法** - 图的深度优先遍历和广度优先遍历:用于探索图的所有节点,如`poj1860, poj3259`。 - 最短路径算法:如...
2. **数学归纳法**:通过归纳推理解决问题(poj2947, poj1487, poj2065, poj1166, poj1222)。 3. **GCD算法**:最大公约数算法的扩展应用(poj3101)。 以上知识点覆盖了ACM-POJ算法训练指南的主要内容,对于初学...
标题“POJ3253-POJ3253-Fence Repair【STL优先队列】”指的是一个在线编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。该题目要求参赛者使用C++编程语言解决特定的问题,并且在解决方案中...
在POJ 1696这个编程题目中,很可能需要解决与极角排序相关的问题。POJ(Problem Online Judge)是一个在线的编程竞赛平台,它提供了许多编程题目供参赛者解决,以提升编程能力和算法理解。 描述中提到的“叉积+深搜...
北京大学在线编程平台上的POJ3009题目名为"Curling 2.0",它是一道涉及到算法与数据结构的复杂问题,主要考察了参赛者对深度优先搜索(DFS)、向量(Vector)操作、回溯法以及剪枝策略的掌握程度。本题的解决方案...
2. POJ——1664 放苹果:此题可能需要理解数组操作和动态规划,解决如何在一定限制下放置苹果的问题,可能涉及到贪心算法或回溯法。 3. POJ——2675 计算书费:可能涉及到输入输出处理,字符串处理和基本的数学运算...