1 条题解

  • 1
    @ 2026-8-19 11:35:33

    太精妙了!!!! 水题一道,知道同余原理可做.

    同余原理

    当然是先学除法同余,再学加减乘法同余,然后你就会发现加减乘法同余比除法简单的多

    本题用除法同余,我这边只简单说明,不做复杂论证.
    我们假设三个正整数a,b,pa,b,p,则(a×b)%p=((a%p)×(b%p))%p(a\times b)\%p=((a\%p)\times(b\%p))\%p这就是乘法同余,那么问题就好转化了.

    问题转化

    注意到,由同余原理得两位数ab%9ab\%9可表示为((a×10)%9+b)%9((a\times10)\%9+b)\%9,则我们再输入nn的一位时,可以将nn已输入的部分×10%9\times10\%9再加上当前输入的一位,就是答案

    Code

    #include<bits/stdc++.h>
    using namespace std;
    string a;
    long long ans=0,o=1;
    int main()
    {
    	cin>>a;
    	for(int i=0;i<a.size();i++){
    		ans=ans+(a[i]-'0')*o;
    		ans%=9;
    	}
    	cout<<ans%9;
    	return 0;
    }
    
    • 1

    信息

    ID
    1063
    提交时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    4
    已通过
    4
    上传者