洛谷 P4999 煩人的數學作業

2022-02-02 04:21:51 字數 1184 閱讀 4603

題目鏈結

這道題從下午一來就開始寫,一直寫到\(4:00\),終於寫完了,累死我辣,但是做出來的感覺還是很蘇服的~。

本題思路:按位考慮+模擬

題目大意是很好理解的,就是算從l到r的所有數中每個數的每一位數字加起來的和。

如果你從\(l\)到\(r\)這樣乙個個列舉的話,就是暴力了,不知道有沒有分……

思路分析:

既然是模擬的話,就需要對這個所求有深入的理解。

可以把\(l\)到\(r\)的答案轉化成\(0~r\)的答案減去\(0~l-1\)的答案。(乙個類似字首和的思想)

下面只要考慮\(0\)到\(x\)的答案怎麼求了,我在這裡說一下我按位處理的過程,**實現很簡單:

考慮最低位:最低位的數可以是\(1~9\)。

剩下的其他位計算方法都一樣:

舉個例子:當\(x=1234\)時,我們考慮第二位和第三位的貢獻:

\(i=3\),\(a[i]=3\)

#includeusing namespace std;

typedef long long ll;

const int maxn=110;

const ll mod=1e9+7;

ll cnt[maxn],a[maxn];

ll getcnt(ll i)

return ans;

}ll mypow(ll a,ll b)

return ans;

}ll shu(ll i)

return ans;

}ll suan(ll qian,ll hou,ll res1,ll resn,ll tot)

ans+=nowans*mypow(10,tot-1);

return ans;

}ll clac(ll n)

for(int i=1;i<=tot;i++)

ans+=suan(qian,hou,a[1],a[tot],tot);

for(int i=2;ians=(ans+qian*(now+1)%mod*mypow(10,tot-i)%mod)%mod;

ans=(ans+hou*now%mod*mypow(10,tot-i)%mod)%mod;

} return ans;

}ll n;

int main()

return 0;

}

洛谷 P3216 HNOI2011 數學作業

最近學了矩陣,kzj大佬推薦了我這一道題目。乍一眼看上去,沒看出是矩陣,就隨便打了乙個暴力,30分。然後仔細分析了一波,發現蠻簡單的。結果全wa了,先看看下面的錯誤分析吧!首先,設f n 為最終答案,易得出 f n f n 1 10 n 然後魔改一下 f n f n 1 10 n 1 begin 1...

洛谷P3216 HNOI2011 數學作業

題目描述 小 c 數學成績優異,於是老師給小 c 留了一道非常難的數學作業題 給定正整數 n 和 m,要求計算 concatenate 1 n mod m 的值,其中 concatenate 1 n 是將所有正整數 1,2,n 順序連線起來得到的數。例如,n 13,concatenate 1 n 1...

洛谷P3216 HNOI2011 數學作業

小 c 數學成績優異,於是老師給小 c 留了一道非常難的數學作業題 給定正整數 n 和 m,要求計算 concatenate 1 n mod m 的值,其中 concatenate 1 n 是將所有正整數 1,2,n 順序連線起來得到的數。例如,n 13,concatenate 1 n 123456...