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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDOJ 5373 The shortest problem 【数论】

發布時間:2025/5/22 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDOJ 5373 The shortest problem 【数论】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HDOJ 5373 The shortest problem 【數論】

題目鏈接 http://acm.hdu.edu.cn/showproblem.php?pid=5373


題目給一個初始數據和重復次數
每一次都在初始數據末端連接上現有數據的各個位的和
之后對最后得出的數據除以11,如果可以整除輸出Yes,否則輸出No


可以被11整除的數有一個特征:
奇數位減去偶數位的數最后得出的數如果能被11整除,原數就可以被11整除,否則原數也不能被11整除
因此用sum保存之前的各個位之和,
遍歷t次之后將dif與11取模即可
注意使用之前的位數為奇數或偶數,現在的位數為奇數或偶數來判斷對最末尾的數是先加還是先減


提供隊友的法二:
以358÷11為例:

所以對于每次得出的結果直接對11取模即可。。。不過還是要保存原先的每位的和
保證下次加入末尾的數據依然正確
就素醬紫。。。


#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<vector> #include<queue> #include<set> using namespace std; #define clr(c) memset(c, 0, sizeof(c)); const int INF = 0x3f3f3f3f; typedef long long LL; int n, t, Case; int dif, len; int sum; int flag, num; int oddBefore, odd; int ll; void fun(int nn){int ll = 0;int difsub = 0;int difplus = 0;flag = 1;while(nn){num = nn % 10;difplus += flag*num;difsub += -1*flag*num;flag *= -1;sum += num;nn /= 10;ll++;}if(ll & 1) odd = true;else odd = false;if(odd == oddBefore){dif += difsub;oddBefore = false;}else{dif += difplus;oddBefore = true;} }int main(){Case = 1;while(~scanf("%d%d", &n, &t)){if(n == -1 && t == -1) break;printf("Case #%d: ", Case++);if(n == 0){puts("Yes");continue;}if(t == 0){if(n % 11) puts("No");else puts("Yes");continue;}flag = 1, num = 0, dif = 0, sum = 0, ll = 0;int tempN = n;int difplus = 0;int difsub = 0;while(tempN){num = tempN % 10;difplus += flag*num;difsub += -1*flag*num;flag *= -1;sum += num;tempN /= 10;ll++;}if(ll & 1){oddBefore = true;dif = difplus;}else{oddBefore = false;dif = difsub;}for(int i = 0; i < t; i++) fun(sum);if(dif % 11) puts("No");else puts("Yes");}return 0; }

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

轉載于:https://www.cnblogs.com/miaowTracy/p/4836758.html

總結

以上是生活随笔為你收集整理的HDOJ 5373 The shortest problem 【数论】的全部內容,希望文章能夠幫你解決所遇到的問題。

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