題目鏈結
這道題從下午一來就開始寫,一直寫到\(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...