日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《黑书》hdu1271递推习题:整数对

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《黑书》hdu1271递推习题:整数对 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我能說這道題目被黑書坑了嗎?這是遞推題?......好吧,那么我是的確沒有想到這樣去做的。只是想著,可以枚舉缺少的位,然后用搜索去解決.......但是我仔細思考,覺得用搜索太麻煩了,要處理很多細節,于是百度了下......唉,不得不說,大牛的思路就是不一樣,碉堡了......

思路:用b表示缺少的那一位的數字,k表示b所在的位數,那么可以用a表示比b位數低的數,用c表示比b位數高的數,就有一下解法:
A=a+b*10^k+c*10^(k+1);

B=a+c*10^(k+1);

依照題意:A+B==n;那么2*a+(b+11a)*10^k==n
從而得出:
c=n/(k^10)/11;
b=n/(k^10)%11;
還有考慮,如果a+a>9的情況,往b進位了.....

#include<iostream> #include<string.h> #include<stdio.h> #include<algorithm> using namespace std; int main() {int n;while(scanf("%d",&n)>0&&n){int a,b,c,k,f[10000],ans=0;for(k=1;k<=n;k*=10){c=n/k/11;b=n/k%11;if((c+b)!=0&&b<=9){a=(n-c*11*k-b*k)/2;if(n==2*a+c*11*k+b*k)f[ans++]=a+b*k+c*k*10;}b--;if((c+b)!=0&&b>=0){a=(n-c*11*k-b*k)/2;if(n==2*a+c*11*k+b*k)f[ans++]=a+b*k+c*k*10;}}if(ans==0)printf("No solution.\n");else{sort(f,f+ans);printf("%d",f[0]);for(int i=1;i<ans;i++)if(f[i]!=f[i-1])printf(" %d",f[i]);printf("\n");}}return 0; }

?

?

總結

以上是生活随笔為你收集整理的《黑书》hdu1271递推习题:整数对的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。