2014年藍橋杯預賽C/C++本科A組解題報告史豐收速算

來源:互聯網
上載者:User
標題:史豐收速算
史豐收速演算法的革命性貢獻是:從高位算起,預測進位。不需要九九表,徹底顛覆了傳統手算!

速算的核心基礎是:1位元乘以多位元的乘法。

其中,乘以7是最複雜的,就以它為例。

因為,1/7是個迴圈小數:0.142857...,如果多位元超過142857...,就要進1

同理,2/7,3/7,...6/7也都是類似的迴圈小數,多位元超過n/7,就要進n

下面的程式類比了史豐收速演算法中乘以7的運算過程。

乘以7的個位規律是:偶數乘以2,奇數乘以2再加5,都只取個位。

乘以7的進位規律是:
滿142857...進1,
滿285714...進2,
滿428571...進3,
滿571428...進4,
滿714285...進5,
滿857142...進6

請剖析器流程,填寫劃線部分缺少的代碼。



//計算個位
intge_wei(inta)
{
if(a%2==0)
return(a*2)%10;
else
return(a*2+5)%10;
}


//計算進位
intjin_wei(char*p)
{
char*level[]={
"142857",
"285714",
"428571",
"571428",
"714285",
"857142"
};

charbuf[7];
buf[6]='\0';
strncpy(buf,p,6);

inti;
for(i=5;i>=0;i--){
intr=strcmp(level[i],buf);
if(r<0)returni+1;
while(r==0){
p+=6;
strncpy(buf,p,6);
r=strcmp(level[i],buf);
if(r<0)returni+1;
______________________________;//填空
}
}

return0;
}


//多位元乘以7
voidf(char*s)
{
inthead=jin_wei(s);
if(head>0)printf("%d",head);

char*p=s;
while(*p){
inta=(*p-'0');
intx=(ge_wei(a)+jin_wei(p+1))%10;
printf("%d",x);
p++;
}

printf("\n");
}


intmain()
{
f("428571428571");
f("34553834937543");
return0;

}


#include<stdio.h>#include<stdlib.h>//計算個位#include<string.h>intge_wei(inta){if(a%2==0)return(a*2)%10;elsereturn(a*2+5)%10;}//計算進位intjin_wei(char*p){char*level[]={"142857","285714","428571","571428","714285","857142"};charbuf[7];buf[6]='\0';strncpy(buf,p,6);inti;for(i=5;i>=0;i--){intr=strcmp(level[i],buf);if(r<0)returni+1;while(r==0){p+=6;strncpy(buf,p,6);r=strcmp(level[i],buf);if(r<0)returni+1;returni;//填空}}return0;}//多位元乘以7voidf(char*s){inthead=jin_wei(s);if(head>0)printf("%d",head);char*p=s;while(*p){inta=(*p-'0');intx=(ge_wei(a)+jin_wei(p+1))%10;printf("%d",x);p++;}printf("\n");}intmain(){f("428571428571");f("34553834937543");return0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.