- //取得能被N整除的第一个数
- long long getFirst(int n){
- long long first=0;
- if(n<10)
- first=n;
- else{
- int step=n%9;
- int num=n/9;
- first=(int)pow(10.0,num);
- first=(step+1)*first-1;
- }
- return first;
- }
- //各位数和能被n整除
- //如果不进位,则+9,否则进位时判断
- //特殊情况,如果n<10,并且上一个数末位是0,则不能加9,而是加n
- void getNumber(int n,int size){
- assert(n>0);
- cout<<""<<endl;
- long long first=getFirst(n);
- while(size!=0){
- cout<<first<<endl;
- int next=(first%100)/10;
- if(next==9){
- long temp=first/100+1;
- first=temp*100;
- int sum=0;
- while(temp!=0){
- sum+=temp%10;
- temp/=10;
- }
- first+=getFirst(n-sum);
- }
- else{
- if(n<10 && first%10==0)
- first+=n;
- else
- first+=9;
- }
- size--;
- }
- }
求所有位数之和能被另一个数整除的序列
最新推荐文章于 2022-02-12 20:31:45 发布