原题链接:数字整除
解题思路: /*******按照除法规则递归调用即可,不是很需要题目给出的运算方法***********/
参考代码:
<First>/********************按照除法顺序********************************/ AC代码: #include <iostream> #include<string> #include<cmath> #define N 1000 using namespace std; bool is_17x(int *arr,int begin,int end); int main() { string str; while(getline(cin,str)) { int num[N]; for(int i=0;i<str.size();++i) num[i]=str.at(i)-'0'; if(num[0]==0) break; if(is_17x(num,0,str.size()-1)) cout<<1<<endl; else cout<<0<<endl; } return 0; } bool is_17x(int *arr,int begin,int end) { if(end-begin==1) return !((arr[end]+arr[begin]*10)%17); arr[begin+1]=(arr[begin]*10+arr[begin+1])%17; return is_17x(arr,begin+1,end); }
<Second>/************(按照题目意思)内存超限版本(反正都写了就记录一下-_-)*************/ #include <iostream> #include<string> #include<cmath> #define N 1000 using namespace std; bool is_17x(int *arr,int begin,int end); int main() { string str; while(getline(cin,str)) { int num[N]; for(int i=0;i<str.size();++i) num[i]=str.at(i)-'0'; if(num[0]==0) break; if(is_17x(num,0,str.size()-1)) cout<<1<<endl; else cout<<0<<endl; } return 0; } bool is_17x(int *arr,int begin,int end) { if(begin-end==-1) { int temp=arr[begin]*10+arr[end]; if(temp%17==0) return true; else return false; } int _n=5*arr[end]/10,n_=5*arr[end]%10; int flag[end+1];//借位标志符 for(int i=begin;i<=end;++i) flag[i]=0; if(arr[end]<n_) flag[end]=1; //个位不够减需要借位 arr[end]=abs(arr[end]-n_); if(flag[end]==1)//个位不够减需要借位 { if(arr[end-1]-1-_n<0) flag[end-1]=1; //十位不够减需要借位 arr[end-1]=abs(arr[end-1]-1-_n); } if(flag[end]==0)//个位够减不需要借位 { if(arr[end-1]-_n<0) flag[end-1]=1; //十位不够减需要借位 arr[end-1]=abs(arr[end-1]-_n); } for(int i=end-2;i>=begin;--i) { if(flag[i+1])//有借位才需要处理 { if(arr[i]>0) {--arr[i];break;} if(arr[i]==0) {arr[i]=9;flag[i]=1;} } } if(flag[begin]) ++begin;//如果最高位都需要借位,那么下次迭代将最高位去除 return is_17x(arr,begin,end); }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复