現在有一個數組,其值為從1到10000的連續增長的數字。出於某次偶然操作,導致這個數組中丟失了某三個元素,同時順序被打亂,現在需要你用最快的方法找出丟失的這三個元素,並且將這三個元素根據從小到大重新拼接為一個新數字,計算其除以7的余數。 例:丟失的元素為336,10,8435,得到的新數字為103368435,除以七的余數為2。
/*順序被打亂的意思是這個數組的剩余的9997個數不再是遞增的而是無序的,在剩余的9997個數字
對應的本來的位置若存在則置為1,不存在則依舊是初始值0,然后再做一個查找,把值為0的三個位置找出,得到
丟失的三個數*/
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
int temp;
int num[10001]={0};
string str=" ",s;
long long sum=0;//防止新數字溢出
for(int i=1;i<=9997;i++)//因為題目已經說了值從1道10000所以0也就沒必要了
{
cin>>temp;
num[temp]=1;
}
for(int j=1;j<=10000;j++)//同上
{
if(num[j]==0)
{
stringstream s_temp;
s_temp<<j;//類型轉換從int到string
s_temp>>s;
str+=s;
}
}
stringstream s_temp;
s_temp<<str;//類型轉換從string到long long
s_temp>>sum;
cout<<sum%7<<endl;
return 0;
}
